Недавно я начал изучать Ruby как второй язык программирования, начав с JavaScript пару месяцев назад.
Я заметил в учебниках, что то, что люди называют в Ruby как методы, часто не имеют круглой скобки(), следуя методу, как в Javascript.
Правильно ли, что все методы в JavaScript имеют скобки() и что-либо справа от точки без скобок, является свойством, но в Ruby метод все еще может быть методом, даже без круглых скобок?
Надеюсь, этот вопрос не заставит меня выглядеть полным идиотом, но я не хочу, чтобы это было на ранних этапах.
Im ruby, методы определяются следующим образом.
def hello_world
puts "hello world!"
end
В javascript, как вы знаете, определяется следующим образом:
function helloWorld(){
console.log("hello world!")
}
В javascript способность передавать функции как обратные вызовы и т.п. Относительно проста.
В приведенной выше функции helloWorld
и helloWorld()
являются двумя очень разрозненными вещами. Первая - это ссылка на функцию, где вторая является фактическим вызовом.
Это обращается к рубину, где Ruby не имеет понятия функции так же, как javascript, имеет методы. У них есть аналогичная концепция, как ссылочные функции на пути procs и lambdas, но реализация отличается.
Все, что сказать, рубиновые методы называются без круглых скобок, где, как и в JS, они
В рубине скобки являются необязательными
obj.method(:hello_world)
который возвращает почти то же самое (связанный метод), что и helloWorld
в вашем примере.