KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Could anybody explain me following situation with Scala implicit conversions mechanism. There is a code: object Main { implicit val x:Int => String = v => "val" implicit def y(v:Int) = "def" def p(s:String) = print(s) def main(args: Array[String]): Unit = { p(1) } } This code prints "val". But when I comment second line: //implicit val x:Int => String = v => "val" code prints "def". So both implicit conversions (x and y) are possible in this situation. There is a Non-Ambiguity Rule - an implicit conversion is only inserted if there is no other possible conversion to insert. According to this rule this code shouldn't be compiled at all. But the code is successfully compiled and executed. What I don't understand? Thanks.
Tags (comma-separated)
Save Edits
Cancel