Улучшите предопределенные методы в Scala

Основной вопрос:

Почему может я писать в Scala просто:

println(10)

Почему не делают я должен записать:

Console println(10)

Последующий вопрос:

Как я могу представить новый метод "нечто", которое везде видимо и применимо как "println"?

8
задан fratnk 4 May 2010 в 14:11
поделиться

1 ответ

Вам не нужно писать консоль перед оператором, потому что объект Scala Predef , который автоматически импортируется для любого исходного файла Scala, содержит такие определения:

def println() = Console.println()
def println(x: Any) = Console.println(x)

Вы не можете легко создать «глобальный» метод, который будет автоматически виден везде. Что вы можете сделать, так это поместить такие методы в объект пакета, например:

package something

package object mypackage {
    def foo(name: String): Unit = println("Hello " + name")
}

Но чтобы использовать его, вам нужно будет импортировать пакет:

import something.mypackage._

object MyProgram {
    def main(args: Array[String]): Unit = {
        foo("World")
    }
}

(Примечание: вместо объекта пакета вы также можете поместите его в обычный объект, класс или признак, если вы импортируете содержимое объекта, класса или признака - но объекты пакета более или менее предназначены для этой цели).

18
ответ дан 5 December 2019 в 09:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: