Tôi đang theo dõi khóa học Ruby của Codecademy, khoảng 85% đã hoàn thành.Phím tắt để gán các biến mẫu
Lặp đi lặp lại nó sẽ yêu cầu bạn tạo ra một lớp và vượt qua trong một số thông số và làm cho họ biến Ví dụ, như thế này ví dụ:
class Computer
def initialize(username, password)
@username = username
@password = password
end
end
Mỗi lần, nó sẽ yêu cầu bạn thực hiện các biến cùng một ví dụ chính xác như các thông số bạn đã nhập.
Điều đó làm tôi băn khoăn liệu có cách nào Ruby tự động xử lý việc này hay không, loại bỏ sự cần thiết phải tự mình loại bỏ mọi lúc.
Tôi biết bạn có thể làm
class Computer
def initialize(username, password)
@username, @password = username, password
end
end
nhưng đó là hầu như không ít gõ.
tôi đã làm một số tìm kiếm và phát hiện ra rằng bạn có thể tạo một bộ 'thu khí' sử dụng attr_reader
như
class Song
attr_reader :name, :artist, :duration
end
aSong = Song.new("Bicylops", "Fleck", 260)
aSong.artist # "Fleck"
aSong.name # "Bicylops"
aSong.duration # 260
Nhưng như xa như tôi có thể nói đó không phải là thực sự những gì tôi đang tìm kiếm. Tôi không cố gắng tự động tạo getters và/hoặc setters. Những gì tôi đang tìm kiếm sẽ là một cái gì đó như thế này
class Person
def initialize(name, age, address, dob) #etc
# assign all passed in parameters to equally named instance variables
# for example
assign_all_parameters_to_instance
# name, age, address and dob would now be accessible via
# @name, @age, @address and @dob, respectively
end
end
tôi đã làm một số tìm kiếm cho shortcut ruby cho gán biến dụ và giống nhau nhưng không thể tìm thấy câu trả lời.
Điều này có khả thi không? Nếu vậy, làm thế nào?
Có bất kỳ hạn chế trong việc sử dụng một cấu trúc thay vì một lớp học? Nó có vẻ hữu ích, nhưng tôi hy vọng nó có một nhược điểm: -P –
Rút ra là một Struct là khoan dung hơn để đối số kích thước 'Person.new (" John ")' -> không có lỗi, nghệ sĩ và thời gian thiết lập để nil . Thông tin thêm về các cấu trúc bạn có thể tìm thấy ở đây: http://www.ruby-doc.org/core-2.1.5/Struct.html – avlazarov
Giống như Proc và lambda sau đó. Cảm ơn, điều này là hữu ích –