arrays - 没有名字的Scala数组
问题描述
这是我如何检查一个数字在 Ruby 中是偶数/奇数的方法:
def even_or_odd(number)
['Even', 'Odd'][number % 2]
end
我在 Scala 中最接近的是:
def evenOrOdd(number: Int): String = {
val a = Array("Even", "Odd")
a(number % 2)
}
我真正想做的是这样的,但它不会编译:
def evenOrOdd(number: Int): String = {
("Even", "Odd")(number % 2)
}
首先,这种“匿名”结构叫什么?其次,什么是优雅的使用方式?如果你有一个类似的例子来说明 Scala 的强大/简洁/清晰,我很想看看。
解决方案
("Even", "Odd")
是类型,它是它的访问器(String,String)
的别名,并且Tuple2[String, String]
._1
._2
你可以做或编辑:正如评论中指出的那样,这实际上不起作用。这将虽然Array("Even", "Odd")(number % 2)
Array("Even", "Odd").apply(number % 2)
number % 2 match {
case 0 => "Even"
case 1 => "Odd"
case -1 => "Odd" //EDIT: as per comment. I forgot about this case
}
推荐阅读
- java - 每次应用启动后执行警报管理器,而不是设置时间段
- javascript - 为什么控制台日志在由外部 webapp 而不是 head 运行时不显示在执行中?
- java - 有没有办法等待传输的完成状态?
- scatter-plot - 仅具有 x 轴的散点图
- optimization - Rust Range.contains 未能内联/优化
- angular - 如何使用来自服务器的新惰性路由更新 Angular 10+ 路由?
- javascript - 如何在打字稿/javascript中将异步常量分配给对象的属性
- html - 我不知道为什么暗/亮模式没有改变在第二页上不起作用
- snowflake-cloud-data-platform - 我的 Snowflake UI 会话在四个小时不活动后不会过期。我该如何解决这个问题?
- azure - Azure 中 2 个 Web 应用程序之间的虚拟目录