2017-02-19 2 views
-1

Это всего лишь образец метода, который я создал для тестирования с использованием Ruby на Mac OSX 10.12, но я не получаю желаемый результат: может ли кто-нибудь предложить, пожалуйста? Я попытался получить результат, используя как paranthesis, так и без(). Это даже не вызывает никакой ошибки.Не удалось получить результат для def using ruby ​​on mac osx

def hi 
puts "Hello World"  
End  
hi  
hi()  
hi("Hello Matz")` 

ответ

0

Попробуйте это:

def hi 
    puts "Hello World" 
end 

hi 
hi() 

И это:

def greet(greeting) 
    puts greeting 
end 

greet("Hello Matz") 

Обратите внимание, что в этой строке:

hi("Hello Matz")` 

у вас есть галочка в конце, так это ошибка:

1.rb:5: syntax error, unexpected tXSTRING_BEG, expecting end-of-input 

It doesn't even throw any error.

Тогда вы не используете эту программу.

Я предлагаю вам открыть окно терминала (Applications/Utilities/Terminal.app), и введите:

$ vimtutor 

ВИМ бесплатный компьютерный редактор программирования, который поставляется вместе с Mac. Сделайте учебник и узнайте, как использовать vim. Чтобы запустить рубиновую программу, вы вводите свой код в файл, а затем сохраняете его, например, my_prog.rb. Затем вам нужно предоставить этот файл рубину для его выполнения. Вы выполнить программу рубиновый, как это:

$ ruby my_prog.rb 

Вы можете создать каталог для всех ваших программ рубина, как это:

$ mkdir ruby_programs 
$ cd ruby_programs 

Чтобы создать новый файл в этом каталоге, используйте Vim:

~/ruby_programs$ vi my_prog.rb 

Как только вы закончите вводить код, сохраните файл, который вернет вас в приглашение в терминале, после чего вы можете запустить свою программу:

~/ruby_programs$ ruby my_prog.rb 

После того, как вы освоитесь с Vim, и вы чувствуете себя уверенно выполнять ваши программы рубина, рассмотрите возможность установки MacVim с яркой мелков цветовой гаммой:

enter image description here

Это лучше смотреть, чем простой Vim.

+1

Предлагать vim для новичков ... Серьезно? – spickermann

+0

Я тестировал vim на 20 обезьян. Для трех бананов, двое из них смогли выбить Шекспира к концу дня – 7stud

0

Попробуйте изменить файл так, что он читает:

def hi 
    puts "Hello World" 
end 

hi 

Некоторые важные различия отметить: def и end оба чувствительны к регистру. Внутренняя часть определения функции отбрасывается двумя пробелами. Так как функция не принимает аргументов, для вызова hi в строке 4 не требуются круглые скобки.

В зависимости от вашего файла, введите команду ruby FILENAME и вы должны увидеть результат Hello World

-1

Рубиновые ключевые слова чувствительны к регистру. Ваш код использует End, и вы, вероятно, захотите использовать end, чтобы отметить конец метода hi.

Поскольку End не то же самое, как endEnd не является ключевым словом), irb держит в ожидании ввода и рассматривает другие три линии, как часть метода hi. Насколько можно судить, его определение не является полным, пока он не достигнет end ключевого слова (все не прописные буквы.)

Правильный способ определить метод является:

def hi 
    puts "Hello World" 
end 

Тогда вы можете позвонить он использует либо hi, либо hi().

Вызова как hi("Hello Matz") (или hi "Hello Matz") бросает ArgumentError исключения с сообщением wrong number of arguments (given 1, expected 0), поскольку он вызывается с одним аргументом, но определение метода hi ничего не знаю о аргументах (не указать его определение, метод hi Безразлично» t принимать любые аргументы).

+0

Спасибо всем за предложения. Я неправильно набрал «Конец», так как он чувствителен к регистру. Теперь я набрал «конец», и все получилось отлично. –

+0

Еще один вопрос: это рег ниже: def test (name = "World") puts "Hello # {name.capitalize}!" end Какой вывод должен предоставить этот «Hello ## {name.capitalize}»? Я просто вижу «Hello World!». Я не уверен в «name.capitalize», что он делает? –

+0

Взгляните на его [документацию] (https://ruby-doc.org/core-2.4.0/String.html#method-i-capitalize). В нем говорится: * «Возвращает копию« str »с первым символом, преобразованным в верхний регистр, а остальное - в нижний регистр.» *. Это не влияет на «Мир», потому что у него уже есть вышеупомянутая капитализация. Если вы хотите, чтобы весь текст заглавны, попробуйте ['upcase'] (https://ruby-doc.org/core-2.4.0/String.html#method-i-upcase). – axiac