Ich habe gerade angefangen zu lernen Scala und versuchen, mich selbst zu lernen, indem Sie eine einfache Anwendung, dicebot.Verwendung von Scala-Eigenschaft als Callback-Schnittstelle
Hier ist die einfache Anwendung, die diesen einfachen Befehl verarbeiten.
CommandRouter(). Laufen ("Würfelwurf 3d4")
package com.kwoolytech.kwoolybot
case class CommandRouter() {
def run(command: String): List[String] = {
val _command = command.split("\\s+").toList
commandArray.head match {
case "dice" => Dice.run(_command.tail)
case _ => List[]
}
}
}
package com.kwoolytech.kwoolybot
case class Dice() extends Bot {
def run(command: List[String]): List[String] = {
command.head match {
case "roll" => roll(_command.tail)
case _ => List[]
}
}
private def roll(command: Array[String]): List[String] = {
val rollCmdPattern = "([0-9]+)d([0-9]+)".r
command.head match {
case rollCmdPattern(numTry, diceSize) => rollDice(numTry, diceSize)
case _ => List[]
}
}
private def rollDice(numTry: Int, diceSize: Int): List[String] = {
(1 to numTry).map { x => scala.util.Random.nextInt(diceSize) + 1})
}.toList.map(_.toString)
}
Btw, auf den ersten Teil der Anwendung, ich will, eine Rückruffunktion übergehen, die erhalten wird aufgerufen, wenn der Würfel Bot seine Arbeit getan hat.
Dice.run (_command.tail, Rückruf)
Die Sache ist .. Ich bin nicht ganz sicher, was für die Rückruf Parameter zu übergehen. Wenn dies Java ist, werde ich eine Schnittstelle wie unten definieren, aber in Scala bin ich nicht wirklich sicher, was zu verwenden ist.
interface KwoolyHttpCallback {
void onWeatherJsonDataReceived(String result);
void onWeatherBitmapDataReceived(Bitmap result);
}
private void initializeKwoolyHttpCallbackFunction() {
httpClientCallback = new KwoolyHttpCallback() {
@Override
public void onWeatherJsonDataReceived(String result) {
try {
dataModel.setWeatherJsonData(result);
queryWeatherBitmapData();
} catch (Exception e) {
Log.e(getClass().getName(), "Exception: ");
e.printStackTrace();
}
}
Ich habe von irgendwo gehört, dass das Merkmal die Schnittstelle ist, aber ich verstehe es wirklich nicht.
trait BotInterface {
def onReceiveResult(result: List[String]): List[String]
}
Könnten Sie mir bitte beibringen, wie Sie das Merkmal als Callback-Schnittstelle verwenden?
Vielen Dank im Voraus! :)
Hey Yuval, ich weiß deine Hilfe zu schätzen. Ich denke, ich habe es verstanden. Vielen Dank! – Harry