我一直认为在scala中不可能进行多级隐式转换(除非你定义视图边界:http://docs.scala-lang.org/tutorials/FAQ/context-and-view-bounds.html)
但似乎类型系统存在缺陷或不一致.以下示例(改编自如何在Scala中链接implicits?)
class A(val n: Double){
def total = n + 10
}
object T1{
implicit def toA(n: Double): A = new A(n)
val i : Int = 5
println(i.total) //Why does this work?
println(5.2.total)
}
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么Int - > Double - > A的隐式转换有效.有人可以解释原因吗?谢谢
我必须创建一个为我创建一组字符的函数.我不确定我应该选择以下哪种方法.据我所知,我不应该使用createSet1,因为如果在返回s之前出现问题,它将会泄漏.
set<char>* createSet1(){
set<char>* s = new set<char>;
//does something
return s;
}
set<char> createSet2(){
set<char> s;
//does something
return std::move(s);
}
unique_ptr<set<char>> createSet3(){
unique_ptr<set<char>> s(new set<char>);
//does something
return s;
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以解释我应该选择哪一个以及为什么,我会很高兴.