Closed7

Scalaの=>の使われ方

Kyosuke AwataKyosuke Awata

自分型

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"と出力します。

https://docs.scala-lang.org/ja/tour/self-types.html

Kyosuke AwataKyosuke Awata
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にクローズされました