Это озадачивает меня - я прочитал причины, по которым Scala существует вообще, и представленный здравый смысл привлекает меня, например, выбор статической типизации (из-за меньшего количества ошибок). Тем не менее, вы можете сравнить (из коробки, по умолчанию) совершенно разные, не относящиеся к делу объекты, и он компилируется и работает нормально. Для меня это просто просит больше ошибок в коде.
Может кто-нибудь объяснить, в чем причина такой возможности? Или выгода?
Я знаю, как работает Scala в вопросах сравнения. Я спрашиваю ПОЧЕМУ , что так работает.
Я ожидаю, что если я захочу это сделать, я напишу неявное преобразование или явное сравнение. Этот подход имеет смысл для меня, нынешний способ Scala - нет, и, следовательно, мой вопрос.
И еще одна вещь - я не смотрю, как использовать сравнение с помощью Scala для некоторых причудливых эффектов, я ищу более строгую проверку ошибок. IOW: я не хочу сравнивать Orange и Apple по цвету, я хочу запретить такое сравнение по умолчанию, если пользователь явно не скажет, что можно сравнивать такие типы.
Пример
class Test
{
val s : String = "ala"
}
class Foo
{
val x : Int = 5
}
object Testbed
{
def main(args : Array[String])
{
val t = new Test
val f = new Foo
if (t==f)
println("match")
else
println("no")
}
}