أحد الاحتمالات هو التحقق من قيمة نوع الإرجاع بعد إرسال الطريقة
setGeneric("getScalar", function(x, ...) {
value <- standardGeneric("getScalar")
if (!is.atomic(value) || length(value) != 1L)
stop("not a scalar atomic vector")
value
})
setMethod(getScalar, "ANY", function(x, ...) x)
احتمال آخر هو تحديد فئة "عدادات" ، مع التحقق من صحة الفئة الأساسية التي تفرض القيد
.Scalar <- setClass("Scalar", contains="ANY", validity=function(object) {
if (length(object) != 1L)
"non-scalar object"
else TRUE
}, prototype=NA)
أو التحكم في أنواع العددية بقوة أكبر مع تسلسل هرمي صغير يعتمد على فئة افتراضية
setClass("Scalar", validity=function(object) {
if (length(object) != 1L)
"non-scalar object"
else TRUE
})
.ScalarInteger <- setClass("ScalarInteger",
contains=c("Scalar", "integer"),
prototype=prototype(NA_integer_))
هذا هو النهج الذي اتبع أشباه الموصلات الحيوية'س biobase حزمة ، مع أ mkScalar
البناء.