Nói rằng tôi có lớp Player
và tôi muốn có một phương pháp boolean để kiểm tra xem một cầu thủ bị tấn công:Sử dụng một dấu hỏi trong các phương pháp ruby
class Player
attr_accessor :name, :health, :attacked?
def initialize(name)
@name = name
@health = 100
@attacked? = false
end
end
tôi nhận được một lỗi cú pháp:
SyntaxError: (irb):14: syntax error, unexpected '='
@attacked? = false
^
from /usr/bin/irb:12:in `<main>'
Loại bỏ dấu chấm hỏi từ attacked
khắc phục sự cố, nhưng tôi nghĩ rằng sẽ tốt hơn theo quy ước để có attacked?
trong mã của tôi. Không phải là vấn đề lớn khi từ bỏ dấu chấm hỏi, nhưng tại sao là các quy ước zero?
và nil?
khi @variables?
và def methods?=
không hợp lệ?
'@ attack' là một biến mẫu, không phải là phương thức. '@attacked = false'; ... 'def tấn công ?; @attacked; end' –
Đoán của tôi là bạn không thể có dấu chấm hỏi như là một phần của tên biến. Đó là chỉ cho các phương pháp. Ngoài ra, tôi không thể nhớ một phương pháp đánh dấu câu hỏi duy nhất với một setter. Họ là tất cả các getters. –
Đó là một điểm tốt. Họ là tất cả các getters. Việc đặt setter với dấu chấm hỏi tạo phương thức "attack? =", Cũng là cú pháp không hợp lệ. Vì vậy, mã của tôi sẽ có tên biến không hợp lệ và tên phương thức không hợp lệ. – rubyuser1357796