2016-09-19 3 views
0

Я узнал о методах scala, и я создал два примера кода, которые несколько похожи по своему характеру, но смущены их вызовами.Scala code - Странное поведение

Способ № 1

def someTestMethod = { 
    println("Inside a test method") 
} 

Это прибегает к Unit типа, так как он ничего не возвращает.

Метод # 2

def anotherTestMethod() = { 
    println("Inside a test method") 
} 

Это прибегает к Unit, а также, но с фигурной скобкой () добавлен.

В чем разница между этими двумя методами, обратите внимание, что если я буду называть первый метод, как someTestMethod(), Ла Скала оболочки/компилятор говорит

ошибка: блок не принимает параметры, но работает хорошо, если я позвоню, как someTestMethod без брекетов.

Кроме того, второй способ кажется доказательством дурака в том смысле, что его можно назвать в любом случае anotherTestMethod или anotherTestMethod(), почему это так?

+0

Помимо дубликата: Это также объясняет поведение http://docs.scala-lang.org/style/method-invocation.html – Jatin

+0

Спасибо за ссылки. .insightful. –

ответ

-2

Если вы не хотите передавать какой-либо параметр методу, используйте первый.

Если вы хотите передать некоторые параметры прохождения, используйте второй с помощью скобок и передайте некоторые параметры и используйте его внутри метода.

Например:

def someTestMethod1(count : Int) = { 
    println("Inside a test method"+count) 
    } 

    someTestMethod1(10) 
+0

Это почти полностью неправильно. Конечно, вам нужно() передать параметры, но есть разница без параметров, и вы не хотите всегда использовать ее без (как объясняется связанный с дубликатом). –

Смежные вопросы