在Scala中等效的Haskell标记或F#计算表达式?
发布时间:2020-12-16 18:48:07 所属栏目:安全 来源:网络整理
导读:F#Computation Expressions允许隐藏厚层语法糖背后的一元语法的复杂性. Scala中是否有类似的东西? 我认为这是为了理解…… 例: val f = for { a - Future(10 / 2) // 10 / 2 = 5 b - Future(a + 1) // 5 + 1 = 6 c - Future(a - 1) // 5 - 1 = 4 } yield b
F#Computation Expressions允许隐藏厚层语法糖背后的一元语法的复杂性.
Scala中是否有类似的东西?
我认为这是为了理解…… 例: val f = for { a <- Future(10 / 2) // 10 / 2 = 5 b <- Future(a + 1) // 5 + 1 = 6 c <- Future(a - 1) // 5 - 1 = 4 } yield b * c // 6 * 4 = 24 val result = f.get 但它确实感觉不对.有更好的语法吗? 例如,你可以拥有哈斯克尔 main = do fromHandle <- getAndOpenFile "Copy from: " ReadMode toHandle <- getAndOpenFile "Copy to: " WriteMode contents <- hGetContents fromHandle hPutStr toHandle contents hClose toHandle putStr "Done." 这与scala不同,看起来不像是一个foreach循环. 解决方法
缺少的部分可能是使用=是scala的for -reherehension:
val f = for { a <- Future(10 / 2) // 10 / 2 = 5 b <- Future(a + 1) // 5 + 1 = 6 c <- Future(a - 1) // 5 - 1 = 4 d = b * c // 6 * 4 = 24 } yield d val result = f.get 通过明智地混合< - 和=,您应该具备所需的所有灵活性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读