【问题标题】:What does 'foo mean in Scala'foo 在 Scala 中是什么意思
【发布时间】:2014-05-06 23:53:23
【问题描述】:

例如,scalatest 表示要检查是否定义了Option,我应该使用类似的表达式

val opt: Option[String] = ...
opt should be ('defined)

由于Option 具有isDefined,这要么是 API 设计,要么实际上是对所述函数的奇异引用……但我想知道它是如何工作的。

【问题讨论】:

标签: scala syntax scalatest


【解决方案1】:

结合 cmets 到问题和一些快速实验,这是我学到的:

'foo 语法只是调用返回 Symbol 实例的查找或创建工厂方法的快捷方式。

符号不是字符串的美化别名;不能简单地将 Symbol 实例用作字符串。

并非所有字符串都可以是符号。空格、转义符等不是符号中的有效字符。

API 设计人员可以使用这些特性。在 OP 中,scalatest 的匹配器要求函数名不是字符串,而是符号。它们本质上是在重载be 函数——

// String; actually AnyRef -- treat as a value comparison
string1 should be ("defined")  

// calls the method on option1 and checks whether output == true
option1 should be ('defined)

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2011-01-03
    • 2014-01-16
    • 2014-05-06
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多