Tôi đã làm việc thông qua Ruby Koans và làm cho nó thành about_triangle_project.rb, trong đó bạn được yêu cầu viết mã cho một phương thức, tam giác.Một giải pháp thanh lịch hơn cho tam giác của Ruby Koans.rb
Mã cho các mặt hàng này được tìm thấy ở đây:
https://github.com/edgecase/ruby_koans/blob/master/koans/about_triangle_project.rb
https://github.com/edgecase/ruby_koans/blob/master/koans/triangle.rb
Trong triangle.rb, tôi tạo ra các phương pháp sau đây:
def triangle(a, b, c)
if ((a == b) && (a == c) && (b == c))
return :equilateral
elsif ((a == b) || (a == c) || (b == c))
return :isosceles
else
return :scalene
end
end
Tôi biết từ việc đọc Chris Pine của "Học cách lập trình" luôn có nhiều cách để làm việc. Mặc dù mã trên hoạt động, tôi không thể không nghĩ rằng có một cách thanh lịch hơn để làm điều này. Liệu có ai sẵn sàng đưa ra những suy nghĩ của họ về cách họ có thể làm cho một phương pháp như vậy hiệu quả hơn và nhỏ gọn?
Một điều khác mà tôi tò mò là tại sao, để xác định tam giác đều, tôi không thể tạo điều kiện (a == b == c). Đó là bằng chứng cho tam giác đều nhưng Ruby ghét cú pháp. Có một lời giải thích dễ dàng là tại sao đây là?
'==' là toán tử chấp nhận các giá trị (như '*' hoặc '/'). nó trả về 'true' hoặc' false'. nó là bất hợp pháp vì không gây nhầm lẫn (ví dụ: 1 == 1 == 1' sẽ đánh giá là 'false' vì nó tương đương với' (1 == 1) == 1'). – glebm
Bạn có thể đã lưu một chút mã bằng cách sử dụng thuộc tính transitive cho ': equilateral': (a == b) && (b == c) – pkananen
Python hỗ trợ cú pháp" a == b == c "(hoặc thậm chí "a