No. R sadece
- Redefine mevcut operatörleri (aslında
<-
gibi +
veya) olanak sağlar
%…%
ile bunları çevreleyen yeni çatı ve çatı operatörleri tanımlar.
Bunlar biz uygun oynamak zorunda kurallardır. Ancak, bu kuralların içinde hepsi adil ve oyunlar. karakter dizeleri normal anlamını (toplama) yok etmeden, birleştirme gerçekleştirmek için Örneğin, +
yeniden tanımlayabilirsiniz:
> `+`
function (e1, e2) .Primitive("+")
Biz numaralar için korumak istiyorsanız eski tanım vardır:
> `+.default` = .Primitive('+')
> `+.character` = paste0
> `+` = function (e1, e2) UseMethod('+')
> 1 + 2
[1] 3
> 'hello' + 'world'
[1] "helloworld"
Bu, ilk argümanının türünde +
jenerik yapmak için S3 sınıf sisteminden yararlanır.
böylece yeniden tanımlanabilir operatörlerin listesi oldukça eklektik.
+
, -
, *
, /
, ^
, **
, &
, |
, :
, ::
, :::
, $
, $<-
, =
, <-
, <<-
, ==
: İlk sayımda aşağıdaki operatör içeriyor , <
, <=
, >
, >=
, !=
, ~
,(modules source code Alındığı.)&&
, ||
, !
, ?
, ??
, @
, @<-
Ayrıca, <-
yeniden tanımlayarak ->
geçersiz kılabilir.Size
> sapply(1 : 4, x -> 2 * x)
[1] 2 4 6 8
Implementation as a gist
bir operatör olarak kullanılmasını '>>' olsalar bile: ama bu en az biri iyi bir örnek, daha az ayrıntılı lambdas tanımlamak Varlığından - Bu nadiren mantıklı olur gibi görünüyor Sadece tırnak veya backticks kullanarak erişebilirsiniz. Ve sonra bile, nadiren uygun bir şekilde. Örnek: '\' >> \ '<- \'+\'; ">> '(4, 2)' – A5C1D2H2I1M1N2O1R2T1
Evet: örnekler için bkz. 'Sos :: ???' veya 'cgwtools :: splatnd'.Ama verilen tüm uyarıları dikkate almayın cevaplar ve yorumlar –