Closed7
Scalaの=>の使われ方
名前渡しパラメータ
def calculate(input: => Int) = input * 37
match式でマッチした際に実行する式を渡すとき
val taro = "Taro"
// taro: String = "Taro"
taro match {
case "Taro" => "Male"
case "Jiro" => "Male"
case "Hanako" => "Female"
}
無名関数
val add = (x: Int, y: Int) => x + y
関数の型定義
def double(n: Int, f: Int => Int): Int = {
f(f(n))
}
別名でのimport
import users.{UserPreferences => UPrefs}
自分型
trait User {
def username: String
}
trait Tweeter {
this: User => // thisが再割り当てされます
def tweet(tweetText: String) = println(s"$username: $tweetText")
}
class VerifiedTweeter(val username_ : String) extends Tweeter with User { // TweeterがUserを必要とするためミックスインします。
def username = s"real $username_"
}
val realBeyoncé = new VerifiedTweeter("Beyoncé")
realBeyoncé.tweet("Just spilled my glass of lemonade") // "real Beyoncé: Just spilled my glass of lemonade"と出力します。
def func1(num: Int): (=> Int) => Int = { r =>
{
println("func1 start")
r * num
}
}
def func2(num: Int): Int => Int =
sdadsar => {
println("func2 start")
sdadsar * num
}
def func3(num1: Int)(num2: Int) = num1 * num2
val getFour = () => {
println("four")
4
}
val result1 = func1(2)(getFour())
val result2 = func2(2)(getFour())
val result3 = func3(2)(4)
println(result1) // 8
println(result2) // 8
println(result3) // 8
このスクラップは2022/09/09にクローズされました