Неожиданный tIDENTIFIER в объявлении функции с необязательным аргументом - PullRequest
1 голос
/ 02 октября 2019

Я пытаюсь объявить класс с несколькими базовыми функциями. Функция, которая, кажется, вызывает проблему, имеет необязательный аргумент, который передает символ.

class Bag < RandomizerCollection
    def initialize()
    end

    def select(description:Hash, amt=:all)
    end

    def empty()
    end 
end

И ошибка, которую я получаю:

Traceback (most recent call last):
    1: from test.rb:5:in `<main>'
test.rb:5:in `require_relative': /home/osboxes/Documents/Year4/Design/A1/Bag.rb:9: syntax error, unexpected tIDENTIFIER (SyntaxError)
...ef select(description:hash, amt = :all)
...                            ^~~
/home/osboxes/Documents/Year4/Design/A1/Bag.rb:9: syntax error, unexpected ')', expecting keyword_end
...t(description:hash, amt = :all)

Я уверен, что этодолжно быть что-то простое, но я просто не могу понять это. Я новичок в Ruby, и я нашел похожие вопросы, но ни один не помог мне найти проблему. Любая помощь приветствуется!

1 Ответ

1 голос
/ 02 октября 2019

Нельзя определить необязательные аргументы (arg=value) после определения аргументов ключевого слова (arg: value).

Вы можете исправить это двумя способами:

  1. Переместите необязательный аргумент arg перед аргументом keywor:
    def select(amt=:all, description:Hash)
    end
Сделайте второй аргумент ключевым словом arg:
    def select(description:Hash, amt: :all)
    end

Стоит прочитать: https://medium.com/podiihq/ruby-parameters-c178fdcd1f4e

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...