a rubygem piszę i to jest przydatne do liczenia wystąpień słów w tekście, wybieram umieszczenie 3 parametrów w konstruktorze klasy.Czy dopuszczalne jest posiadanie parametru w konstruktorze klasy?
Kod działa, ale chcę go zmienić na wygodę. Z twojego doświadczenia wynika, że łatwiej jest odczytać/używać/używać jako API klasy z konstruktorem bez parametrów i wieloma metodami ustawiającymi/pobierającymi lub kodem takim jak ten, ze wszystkimi parametrami w konstruktorze?
TIA
Paolo
def initialize(filename, words, hide_list)
if ! filename.nil?
@filename = filename
@occurrences = read
else
@filename = STDIN
@occurrences = feed
end
@hide_list = hide_list
@sorted = Array(occurrences).sort { |one, two| -(one[1] <=> two[1]) }
@words = words
end
Jedną z zalet posiadania parametrów w konstruktorze co najmniej w innych językach jest to, że można uczynić ten typ niezmiennym. Nie możesz tego zrobić, jeśli wszystko ustawisz osobno. Nie wiem, czy to dotyczy Rubiego, czy nie, dlatego jest to raczej komentarz niż odpowiedź. –
@Jon: http://stackoverflow.com/questions/408208/ruby-immutable-objects omawia, czy można wykonywać niezmienne obiekty w ruby (które mogą różnić się od typu niezmiennego) –