问题 :
()
作为 值 (而不是类型))?我知道这些空元组可以在标准意义上用于定义void函数。当我错误地定义了一个空元组 值 var a = ()
(类型为()
)的变量时,我开始怀疑这些空元组值是否可以在某些情况下使用。有人知道这样的应用程序吗?
示例:可能具有数组和可选属性的应用程序?
例如,我们可以创建一个可选的空元组数组,该数组自然只能包含nil
或()
:
/* Optionals */
var foo: ()? = ()
print(foo.dynamicType) // Optional<()>
var arr : [()?] = [foo]
for i in 2...8 {
if i%2 == 0 {
arr.append(nil)
}
else {
arr.append(foo)
}
}
print(arr) // [Optional(()), nil, Optional(()), ... ]
由于空元组的内存占用量很小,对于“布尔nil / not
nil”的微内存管理来说,这看起来很整齐,但是由于类型Bool
具有相同的小占用空间,即使在这里我也看不到任何直接的用途,即使在(不同于)场景中,我们确实需要对操作进行位低优化。
也许我只是用一些狭窄而无法使用的应用程序追逐自己的尾巴,但是无论如何:这些虚空存在任何可能的显式用法()
(作为 实例 ,而不是类型)?
()
在处理“
CS”问题时,有很多地方会很有用,这些地方通常具有“即使您确实已经有了X,也使用Y实现X”的形式。例如,我可以说,使用Dictionary实现Set。好吧,字典是键/值对。值的类型应该是什么?我实际上已经在具有“字典”但没有“集合”的语言中看到了这一点,并且人们经常使用1或true作为值。但这不是你真正的意思。这带来了歧义。如果值是假的怎么办?是否在场景中?按照Dictionary来实现Set的正确方法是as
[Key: ()]
,然后结束诸如以下代码行:
set[key] = ()
还有其他等效版本,例如Optional<()>
。我也可以将整数实现为[()]
或Set<()>
。这有点愚蠢,但是我以前做过类似的事情来探索数论。
也就是说,这些几乎都是故意的不切实际的解决方案。实用的怎么样?这些通常在通用编程中显示。例如,想象一个具有这种形式的函数:
func doThingAndReturn<T>(retval: T, f: () -> Void) -> T {
f()
return retval
}
这听起来并不傻。这些内容很容易以Command模式显示。但是如果没有撤退怎么办?我不在乎退货吗?好吧,很好,只需传递一个()
值即可。
func doThing(f: () -> Void) {
doThingAndReturn((), f: f)
}
同样,您可能想要一个类似zipMap
以下的函数:
func zipMap<T, U>(funcs: [(T) -> U], vals: [T]) -> [U] {
return zip(funcs, vals).map { $0($1) }
}
这将对T
type值应用一系列函数T
。即使T
发生()
,我们也可以使用它,但是我们必须生成一堆()
值才能使它起作用。例如:
func gen<T>(funcs: [() -> T]) -> [T] {
return zipMap(funcs, vals: Array(count: funcs.count, repeatedValue: ()))
}
我不希望在Swift中经常出现这种情况,因为Swift主要是一种命令式语言,并且Void
几乎在所有情况下都将其隐藏。但是,当它们过渡到命令式编程时,您确实会在诸如Scala之类的功能语言中看到类似的事情。
给定一个具有用于初始化的帮助器方法的类: 是否可以从\u int方法注释
问题内容: 我需要这样做:将值更改侦听器更改为JTextField 我想Condemwnci的解决方案,但我得到的是错误的路线: 在我的情况是: 就我而言,我想更新Jtable中的行,所以我的方法将是这样的: 我在Linux ubuntu 11.10上使用Eclipse(如果有的话)。 编辑: 我不明白为什么,但是它可以通过以下方式工作: 然后改写Implements方法,而不是全部在同一行中完成
假设我有一个 我可以为任何我可能想要的结构实现,例如: 现在,我想自动我的特征,无论元组是由所有实现特征的类型组成的。直觉上,所有快乐的元组也是快乐的。 有可能做这样的事吗?例如,我可以简单地将的实现扩展到两种类型的任意元组: 因此,这可以完美地编译: 但是我怎么能把它推广到任何长度的元组呢?就我的理解而言,我们在Rust中没有变异的泛型。有变通办法吗?
问题内容: 我需要保留Swift元类型的集合并编写一个函数,该函数将检查给定对象是否是其中之一的实例。我可以在Java中轻松做到这一点: 但是,我不知道如何在Swift中做到这一点: 这甚至可以在Swift中完成吗? 问题答案: 不幸的是,您目前只能对运算符使用命名类型,还不能对其使用任意的元类型值(尽管实际上 应该 可以使用IMO )。 假设您可以控制要与之进行比较的元类型的创建,则达到相同结果
Monoid函数的类型签名是:
本文向大家介绍什么是React的实例?函数式组件有没有实例?相关面试题,主要包含被问及什么是React的实例?函数式组件有没有实例?时的应答技巧和注意事项,需要的朋友参考一下 React的实例:通过继承React.Component的类生成 函数式组件没有实例