标签: mixins

动态混合特征

有特点

trait Persisted {
  def id: Long
}
Run Code Online (Sandbox Code Playgroud)

如何实现一个接受任何case类实例的方法并返回其特征混合的副本?

该方法的签名如下:

def toPersisted[T](instance: T, id: Long): T with Persisted
Run Code Online (Sandbox Code Playgroud)

scala traits mixins case-class

38
推荐指数
2
解决办法
1万
查看次数

何时使用mixin以及何时在Dart中使用接口?

我非常熟悉接口和抽象类的概念,但不熟悉mixins的概念.

现在,在Dart中,每个类都A定义了一个隐式接口,可以B通过使用implements关键字由另一个类实现.没有明确的方式来声明接口,例如,在Java中,接口只包含未实现的方法(最终是静态变量).在Dart中,由于接口是由类定义的,接口的方法A实际上可能已经实现,但实现的类B仍然需要覆盖这些实现.

我们可以从以下代码中看到这种情况:

class A {
  void m() {
    print("method m");
  }
}

// LINTER ERROR: Missing concrete implementation of A.m
// Try implementing missing method or make B abstract.
class B implements A {
}
Run Code Online (Sandbox Code Playgroud)

在Dart中,mixin也是通过普通的类声明来定义的......

...原则上,每个类都定义了一个可以从中提取的mixin.但是,在此提议中,mixin只能从没有声明构造函数的类中提取.这种限制避免了由于需要在继承链上传递构造函数参数而引起的复杂化.

mixin基本上是一个可以定义未实现或实现的方法的类.这是一种将方法添加到另一个类而无需逻辑上使用继承的方法.在Dart中,mixin应用于超类,通过"正常"继承扩展,如下例所示:

class A {
  void m() {
    print("method m");
  }
}

class MyMixin {
  void f(){
    print("method f");
  }
}

class B extends A with MyMixin {
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们应该注意到,B …

oop abstract-class interface mixins dart

37
推荐指数
5
解决办法
7385
查看次数

sam @mixin可以接受未定义数量的参数吗?

我正在尝试为过渡创建一个sass mixin.这就是我到目前为止所拥有的.

@mixin transition($var)
  -webkit-transition: $var
  transition: $var
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样传递多个参数

@include transition(color .5s linear, width .5s linear)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误

Syntax error: Mixin transition takes 1 argument but 2 were passed.
Run Code Online (Sandbox Code Playgroud)

有没有办法这样做,所以它在css中产生以下输出,同时仍然接受一个未定义数量的参数?

-webkit-transition: color .5s linear, width .5s linear;
transition: color .5s linear, width .5s linear;
Run Code Online (Sandbox Code Playgroud)

arguments sass undefined mixins

36
推荐指数
2
解决办法
1万
查看次数

什么是C++ Mixin-Style?

我刚刚遇到过这个关键字C++ Mixin-Style,有谁知道这是什么?

这篇文章中,已被回答为一种设计模式.它是否与本文档中描述的设计模式相同?

c++ mixins

35
推荐指数
5
解决办法
2万
查看次数

动态地将基类混合到Python中的实例

是否可以在运行时向对象实例(不是类!)添加基类?关于如何Object#extend在Ruby中工作的一些方面:

class Gentleman(object):
  def introduce_self(self):
    return "Hello, my name is %s" % self.name

class Person(object):
  def __init__(self, name):
    self.name = name

p = Person("John")
# how to implement this method?
extend(p, Gentleman)
p.introduce_self() # => "Hello, my name is John"
Run Code Online (Sandbox Code Playgroud)

python oop mixins

33
推荐指数
3
解决办法
8338
查看次数

在Sass mixin中跳过可选参数

我有这个mixin来处理一个简单的CSS3线性渐变:

@mixin linear-gradient($from, $to, $dir: bottom, $dir-webkit: top, $ie-filters: false) {
    background-color: $to;
    background-image: -webkit-linear-gradient($dir-webkit, $from, $to);
    background-image: linear-gradient(to $dir, $from, $to);
    @if $ie-filters == true and $old-ie {
         filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($from)}', endColorstr='#{ie-hex-str($to)}');
    }
}
Run Code Online (Sandbox Code Playgroud)

$dir 是'方向'的缩写.

如果我需要制作$ie-filters'true'并且我不需要更改$dir/ $dir-webkit默认值,我仍然需要重新声明它们,这显然不是非常干燥和最佳,所以我必须这样做:

@include linear-gradient(#7a7a7a, #1a1a1a, bottom, top, true);

当我想要这样做时:

@include linear-gradient(#7a7a7a, #1a1a1a, true);

调用mixin时如何以这种方式跳过参数?

PS如果你想知道$dir-webkitWebkit 的论点,因为它仍然没有处理新的渐变语法(参见:http://generatedcontent.org/post/37949105556/updateyourcss3 - > 新的渐变语法),方向需要与标准语法相反.

sass mixins

31
推荐指数
1
解决办法
7320
查看次数

Mixins与C#4.0

我已经看到了关于是否可以在C#中创建mixins的各种问题,并且它们经常被引导到codeplex上的重新混合项目.但是,我不知道我是否喜欢"完整界面"的概念.理想情况下,我会像这样扩展一个类:

    [Taggable]
    public class MyClass
    {
       ....
    }
Run Code Online (Sandbox Code Playgroud)

通过简单地添加Taggable接口,我可以通过某种对象工厂创建MyClass类型的对象.返回的实例将包含MyClass中定义的所有成员以及通过添加标记属性(如标记集合)提供的所有成员.使用C#4.0(动态关键字)似乎很容易做到这一点.重组项目使用C#3.5.有没有人有任何好方法通过C#4.0扩展对象而不改变类本身?谢谢.

mixins c#-4.0

30
推荐指数
2
解决办法
1万
查看次数

类“PreferredSizeWidget”不能用作 mixin,因为它既不是 mixin 类也不是 mixin

升级到 Flutter 3.10(和 Dart 3)后,我收到此错误:

类“PreferredSizeWidget”不能用作 mixin,因为它既不是 mixin 类也不是 mixin。

当前版本的代码:

class MyAppBar extends StatelessWidget with PreferredSizeWidget {
  ...
}
Run Code Online (Sandbox Code Playgroud)

mixins dart flutter

30
推荐指数
1
解决办法
2万
查看次数

有没有办法用Rspec存根包含模块的方法?

我有一个包含在另一个模块中的模块,它们都实现了相同的方法.我想存根包含模块的方法,如下所示:

module M
  def foo
    :M
  end
end

module A
  class << self
    include M

    def foo
      super
    end
  end
end

describe "trying to stub the included method" do
  before { allow(M).to receive(:foo).and_return(:bar) }

  it "should be stubbed when calling M" do
    expect(M.foo).to eq :bar
  end

  it "should be stubbed when calling A" do
    expect(A.foo).to eq :bar
  end
end
Run Code Online (Sandbox Code Playgroud)

第一个测试是通过,但第二个测试输出:

Failure/Error: expect(A.foo).to eq :bar

   expected: :bar
        got: :M
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下存根不工作?有没有不同的方法来实现这一目标?

谢谢!

------------------------------------- UPDATE ------------ ----------------------

谢谢!使用allow_any_instance_of(M)解决了这个问题.我的下一个问题是 - 如果我使用prepend而不包括会发生什么?请参阅以下代码:

module M
  def …
Run Code Online (Sandbox Code Playgroud)

ruby rspec mixins stubbing

29
推荐指数
1
解决办法
2万
查看次数

是否有可能在PHP中使用mixins

我开始了解mixins.所以我怀疑是,是否有可能在php中使用mixins?如果是,那么如何?

php mixins

28
推荐指数
2
解决办法
1万
查看次数