当前位置: 首页 > 面试题库 >

用前导点符号调用Swift类工厂方法?

拓拔泉
2023-03-14
问题内容

在最近的问题中,发布者具有以下有趣的代码行:

self.view.backgroundColor = .whiteColor()

看到这一点我感到很惊讶。我只看过用于枚举值的 前导点
符号。在这种情况下,backgroundColoris是type,UIColor?并且whiteColorUIColor返回的class方法UIColor

为什么这样做?这是调用工厂方法的合法方法吗?


问题答案:

功能 称为“
隐式成员表达式


隐式成员表达式是在类型推断可以确定隐式类型的上下文中访问类型成员(例如枚举用例 或类方法 )的缩写方式。它具有以下形式:

.``member name

但是,截至目前,我劝你 不要 在使用此功能OptionalImplicitlyUnwrappedOptional内容。

尽管这可行:

// store in Optional variable
let col: UIColor?
col = .redColor()

// pass to function
func f(arg:UIColor?) { println(arg) }
f(.redColor())

这会使编译器崩溃:(

func f(arg:UIColor?, arg2:Int) { println(arg) }
//                 ^^^^^^^^^^ just added this.
f(.redColor(), 1)


 类似资料:
  • 问题内容: 我在python中遇到了一个奇怪的错误,其中将类的方法用作工厂会导致实例化类的方法被调用两次。 最初的想法是使用母类的方法根据所传递的参数返回其孩子之一的特定实例,而不必在类外声明工厂函数。 我知道使用工厂功能将是在此处使用的最佳设计模式,但是在项目的这一点上更改设计模式将非常昂贵。因此,我的问题是:在这种模式中,是否有办法避免重复调用而仅获得单个调用? 任何帮助,不胜感激。 问题答案

  • 问题内容: 在我遵循的方法: 我可以从HTML调用它,例如: 如您所见,如果我得到回报 这是实用程序,因此我想将其定义为 没有例外 当我尝试这样称呼它时: 没发生什么事。 **我已添加到控制器。 如何从HTML调用工厂方法? (*如果不清楚,欢迎您更改/编辑我的问题) 谢谢, 问题答案: 好吧,您实际上不应该这样做…但是您 可以 做的是将服务对象放在$ scope的一个属性中,然后从那里调用它。

  • 我在调用覆盖方法的子类方法时遇到了问题,所以我创建了一个小应用程序来测试它。当超类调用其子类覆盖的方法时,仍然调用超类的方法版本,而不是子类的版本,后者覆盖了超类的方法,应该是被调用的方法。 预期输出:

  • Okie正在Spring 3.1.4上运行一些第三方代码,我无法更改。代码还使用在运行时动态注入类型。这种类型属于原型范围。所有这些都是基于服务对象创建的

  • 这与我之前的问题有关。 单元格格式正确,填充正确,因此该部件工作正常。要使细胞工厂正确还需要做什么?

  • 代码直戳: https://github.com/faif/python-patterns 创建型模式 工厂方法 实例 -> 类 -> 类工厂 抽象工厂 简单来说就是把一些具有相同方法的类再进行封装,抽象共同的方法以供调用.是工厂方法的进阶版本. 实例 -> 类 -> 类工厂 -> 抽象工厂 惰性初始化 Lazy evaluation 这个Python里可以使用@property实现,就是当调用的