【发布时间】:2020-01-19 10:19:12
【问题描述】:
我想声明一个函数,它接收一个字符串和一个 Tuple2,第一个值是布尔值,第二个值是任何类型。 tuple2 应该有一个默认值,以防它没有传递给函数
我尝试使用以下代码将布尔值设置为 false,但失败得很惨。
def setSet(key: String, value: Any, tuple2: Tuple2[Boolean, Any] = tuple2._1 = false)
【问题讨论】:
-
如果可能尽量避免
Any,但由于tuple2采用Any值,您可以将任何值设置为值,所以也许尝试None就像def setSet(key: String, value: Any, tuple2: (Boolean, Any) = (false, None))一样 -
如果
setSet("foo", "bar")被调用,tuple2的值应该是多少?您不能创建只有一个值的两个元素元组。或者您是否期望使用value参数? -
你能解释一下你想做什么吗?
Any几乎总是一种代码气味。另外,您提出的解决方案没有太大意义。 -
你们是对的,因为我的解决方案最终没有奏效......我需要创建一个默认值 Tuple2(Boolean,
) 默认必须为 false第一个 Tuple 值,第二个类型只要是 false 就无关紧要((如果我覆盖默认值,我会提供类型) -
好吧,您可以只使用
setSet(key: String, value: Any, tuple: (Boolean, Any) = (false, 0)或其他任何东西,而不是零,即使您的旧解决方案也可以。但问题是,这并没有多大意义。正如我所说,你确定你真的需要一个Any吗?这通常是糟糕设计的标志。