场景:
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A;
function calc($v) {
$v++;
return A::calc($v);
}
}
print (new MyClass())->calc(2); // should print 4
Run Code Online (Sandbox Code Playgroud)
这段代码不起作用,我找不到像继承那样调用特征函数的方法.我试着打电话self::calc($v),static::calc($v)和parent::calc($v),A::calc($v)以及以下内容:
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A {
calc as traitcalc;
}
function calc($v) {
$v++;
return traitcalc($v);
}
}
Run Code Online (Sandbox Code Playgroud)
什么都行不通.
有没有办法使它工作或必须完全覆盖比这复杂得多的特征函数:)
我试图PartialEq在我创建的结构和我的结构实现From特征的其他类型之间实现.真正的代码更复杂,并且From适用于其他类型,但这是核心问题的精简版本.
我希望能够做到:
let s = Data::from(5);
assert_eq!(5, s);
Run Code Online (Sandbox Code Playgroud)
这是基本代码:
struct Data {
data: i64,
}
impl From<i64> for Data {
fn from(v: i64) -> Data {
Data { data: v }
}
}
impl<'a> From<&'a i64> for Data {
fn from(v: &'a i64) -> Data {
Data { data: v.clone() }
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的第一次尝试:
impl<T> PartialEq<T> for Data
where T: Into<Data>
{
fn eq(&self, other: &T) -> bool {
let o = Data::from(other);
self.data …Run Code Online (Sandbox Code Playgroud) 我想在自定义格式化程序中使用预定义的格式化程序.
例如,这是colModel:
colModel: [
...
{ name: 'col1', formatter: myFormatter }
...
]
Run Code Online (Sandbox Code Playgroud)
这是格式化程序:
function myFormatter(cellValue, options, rowObject) {
if (typeof cellValue === 'number') {
// Here I want to call the "currency" predefined formatter on the cellValue
} else {
return 'No number to display';
}
}
Run Code Online (Sandbox Code Playgroud)
可能吗?谢谢.