2011-10-19 36 views
6

Có hạn chế nào đối với tên của các lớp S3 không? Ví dụ, các khoảng trống được cho phép trong tên? Tôi thấy rằng các khung dữ liệu có một lớp "data.frame" chứ không phải "khung dữ liệu". Nếu không có một hạn chế chính thức, có những vấn đề tiềm tàng nào có không gian trong tên không? Tôi chỉ không chạy vào bất cứ điều gì khác hơn so với các chế độ cơ bản vì vậy tôi chắc chắn rằng những người bạn với nhiều kinh nghiệm sẽ biết.Tên lớp S3: Được phép là gì?

Trả lời

6

Không có nhiều hạn chế. Kiểm tra con quái vật này:

`plot.44 [email protected]#$%^&` <- function(x) { 
    plot(rnorm(x), pch=16, col="red", 
      main = "But why would you want to do this??") 
} 

dat <- 55 
class(dat) <- "44 [email protected]#$%^&" 
plot(dat) 

Một lý do không để đặt chỗ thành một tên lớp là nó làm cho nó một chút phức tạp hơn để trực tiếp gọi các phương thức cho lớp đó.

plot.44 [email protected]#$%^&(100) # This doesn't work 

`plot.44 [email protected]#$%^&`(100) # You have to do this instead 
+0

Chỉ cần đoán, nhưng trong số những thứ khác, tôi cho rằng tính quái dị có thể không phải là tất cả những điều đó tùy thuộc vào mã hóa (ngoài việc là một quái vật). –

+0

Tôi có thể tưởng tượng rằng đó là một vấn đề với một số nhân vật. Có lẽ không phải là những người tôi đã bao gồm ở đó, mặc dù, kể từ khi (tôi chỉ nhận ra) tất cả chúng được sử dụng trong cách này hay cách khác trong cơ sở R! –

+2

Một lớp "π" hoạt động cho tôi – hadley

2

Spaces được phép:

test = 1 
class(test) = c(class(test) , "My Class") 

Không chắc về hạn chế hoặc hậu quả của việc có ký tự đặc biệt trong tên lớp khác. Chắc chắn có không gian/ký tự đặc biệt trong tên lớp không phải là thông thường (không chỉ là R, mà là các ngôn ngữ khác). Tôi đề nghị tránh điều đó.

Các vấn đề liên quan