Error[8]: Undefined offset: 11, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在尝试实现功能组合.起初我定义了一个名为compose的函数. func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C { return { f(g($0)) }} 这非常有效.例如,如果我没有和isEven函数一样 func not(value: Bool) -> Bool { return !value}func 我正在尝试实现功能组合.起初我定义了一个名为compose的函数.

func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
func not(value: Bool) -> Bool {    return !value}func even(value: Int) -> Bool {    return value % 2 == 0}
)) }}

这非常有效.例如,如果我没有和isEven函数一样

func odd(value: Int) -> Bool {    return compose(not)(isEven)(value)}

奇数函数可以用not来定义,甚至可以这样定义:

infix operator .. { associativity left }func ..<A,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
infix operator .. { associativity left }func ..<A,C>(f: (B -> C),g: (A -> B)) -> A -> C {    return { f(g(
func odd(value: Int) -> Bool {    return (not..even)(value)}
)) }}
)) }}

然后我决定使用自定义运算符而不是compose函数.自定义 *** 作符是……起初我刚刚复制了compose函数并将其名称更改为…以下是它的样子:

let odd = not..even

这里Xcode给出了错误:“一元运算符实现必须有’前缀’或’后缀’修饰符”

之后我将 *** 作符更改为:

let array = [1,2,3,4]array.map((+1))

奇怪的功能:

prefix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(r : A) -> (A -> A) {    return { l in l + r }}postfix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(l : A) -> (A -> A) {    return { r in l + r }}

或者作为封闭:

let l = [Int](1...10) /// [1,4,5,6,7,8,9,10]l.map(+5) /// [6,10,11,12,13,14,15]

这段代码很有效.现在我知道也许这里没有任何好处.. *** 作符在这里讨好,但我想知道为什么不允许咖喱 *** 作符?例如,如果运算符被定义为currIEd函数,我们将做这样的事情:

l.map({ x in x + 5 })
解决方法 您需要一些称为运算符部分的东西,或者能够在左侧或右侧部分应用二元运算符.不幸的是,Swift只允许完全没有问题的 *** 作符,这意味着你必须要有一点创意.如果我们将运算符视为二元函数op:(A,A) – > A,然后它的咖喱形式,咖喱 *** 作:A – > A – > A,只是一个返回一元函数的一元函数.我们可以使用分别模拟左右分区的自定义前缀和后缀运算符来伪装它.

这是前缀和后缀

[+++]

这允许您编写诸如此类的代码

[+++]

而不是旧的

[+++] 总结

以上是内存溢出为你收集整理的Curried中缀 *** 作符在swift中.可能吗?全部内容,希望文章能够帮你解决Curried中缀 *** 作符在swift中.可能吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 12, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在尝试实现功能组合.起初我定义了一个名为compose的函数. func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C { return { f(g($0)) }} 这非常有效.例如,如果我没有和isEven函数一样 func not(value: Bool) -> Bool { return !value}func 我正在尝试实现功能组合.起初我定义了一个名为compose的函数.

func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
func not(value: Bool) -> Bool {    return !value}func even(value: Int) -> Bool {    return value % 2 == 0}
)) }}

这非常有效.例如,如果我没有和isEven函数一样

func odd(value: Int) -> Bool {    return compose(not)(isEven)(value)}

奇数函数可以用not来定义,甚至可以这样定义:

infix operator .. { associativity left }func ..<A,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
infix operator .. { associativity left }func ..<A,C>(f: (B -> C),g: (A -> B)) -> A -> C {    return { f(g(
func odd(value: Int) -> Bool {    return (not..even)(value)}
)) }}
)) }}

然后我决定使用自定义运算符而不是compose函数.自定义 *** 作符是……起初我刚刚复制了compose函数并将其名称更改为…以下是它的样子:

let odd = not..even

这里Xcode给出了错误:“一元运算符实现必须有’前缀’或’后缀’修饰符”

之后我将 *** 作符更改为:

let array = [1,2,3,4]array.map((+1))

奇怪的功能:

prefix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(r : A) -> (A -> A) {    return { l in l + r }}postfix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(l : A) -> (A -> A) {    return { r in l + r }}

或者作为封闭:

let l = [Int](1...10) /// [1,4,5,6,7,8,9,10]l.map(+5) /// [6,10,11,12,13,14,15]

这段代码很有效.现在我知道也许这里没有任何好处.. *** 作符在这里讨好,但我想知道为什么不允许咖喱 *** 作符?例如,如果运算符被定义为currIEd函数,我们将做这样的事情:

l.map({ x in x + 5 })
解决方法 您需要一些称为运算符部分的东西,或者能够在左侧或右侧部分应用二元运算符.不幸的是,Swift只允许完全没有问题的 *** 作符,这意味着你必须要有一点创意.如果我们将运算符视为二元函数op:(A,A) – > A,然后它的咖喱形式,咖喱 *** 作:A – > A – > A,只是一个返回一元函数的一元函数.我们可以使用分别模拟左右分区的自定义前缀和后缀运算符来伪装它.

这是前缀和后缀

这允许您编写诸如此类的代码

[+++]

而不是旧的

[+++] 总结

以上是内存溢出为你收集整理的Curried中缀 *** 作符在swift中.可能吗?全部内容,希望文章能够帮你解决Curried中缀 *** 作符在swift中.可能吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 13, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在尝试实现功能组合.起初我定义了一个名为compose的函数. func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C { return { f(g($0)) }} 这非常有效.例如,如果我没有和isEven函数一样 func not(value: Bool) -> Bool { return !value}func 我正在尝试实现功能组合.起初我定义了一个名为compose的函数.

func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
func not(value: Bool) -> Bool {    return !value}func even(value: Int) -> Bool {    return value % 2 == 0}
)) }}

这非常有效.例如,如果我没有和isEven函数一样

func odd(value: Int) -> Bool {    return compose(not)(isEven)(value)}

奇数函数可以用not来定义,甚至可以这样定义:

infix operator .. { associativity left }func ..<A,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
infix operator .. { associativity left }func ..<A,C>(f: (B -> C),g: (A -> B)) -> A -> C {    return { f(g(
func odd(value: Int) -> Bool {    return (not..even)(value)}
)) }}
)) }}

然后我决定使用自定义运算符而不是compose函数.自定义 *** 作符是……起初我刚刚复制了compose函数并将其名称更改为…以下是它的样子:

let odd = not..even

这里Xcode给出了错误:“一元运算符实现必须有’前缀’或’后缀’修饰符”

之后我将 *** 作符更改为:

let array = [1,2,3,4]array.map((+1))

奇怪的功能:

prefix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(r : A) -> (A -> A) {    return { l in l + r }}postfix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(l : A) -> (A -> A) {    return { r in l + r }}

或者作为封闭:

let l = [Int](1...10) /// [1,4,5,6,7,8,9,10]l.map(+5) /// [6,10,11,12,13,14,15]

这段代码很有效.现在我知道也许这里没有任何好处.. *** 作符在这里讨好,但我想知道为什么不允许咖喱 *** 作符?例如,如果运算符被定义为currIEd函数,我们将做这样的事情:

l.map({ x in x + 5 })
解决方法 您需要一些称为运算符部分的东西,或者能够在左侧或右侧部分应用二元运算符.不幸的是,Swift只允许完全没有问题的 *** 作符,这意味着你必须要有一点创意.如果我们将运算符视为二元函数op:(A,A) – > A,然后它的咖喱形式,咖喱 *** 作:A – > A – > A,只是一个返回一元函数的一元函数.我们可以使用分别模拟左右分区的自定义前缀和后缀运算符来伪装它.

这是前缀和后缀

这允许您编写诸如此类的代码

而不是旧的

[+++] 总结

以上是内存溢出为你收集整理的Curried中缀 *** 作符在swift中.可能吗?全部内容,希望文章能够帮你解决Curried中缀 *** 作符在swift中.可能吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Curried中缀 *** 作符在swift中.可能吗?_app_内存溢出

Curried中缀 *** 作符在swift中.可能吗?

Curried中缀 *** 作符在swift中.可能吗?,第1张

概述我正在尝试实现功能组合.起初我定义了一个名为compose的函数. func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C { return { f(g($0)) }} 这非常有效.例如,如果我没有和isEven函数一样 func not(value: Bool) -> Bool { return !value}func 我正在尝试实现功能组合.起初我定义了一个名为compose的函数.

func compose<A,B,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
func not(value: Bool) -> Bool {    return !value}func even(value: Int) -> Bool {    return value % 2 == 0}
)) }}

这非常有效.例如,如果我没有和isEven函数一样

func odd(value: Int) -> Bool {    return compose(not)(isEven)(value)}

奇数函数可以用not来定义,甚至可以这样定义:

infix operator .. { associativity left }func ..<A,C>(f:(B -> C))(g: (A -> B)) -> A -> C {    return { f(g(
infix operator .. { associativity left }func ..<A,C>(f: (B -> C),g: (A -> B)) -> A -> C {    return { f(g(
func odd(value: Int) -> Bool {    return (not..even)(value)}
)) }}
)) }}

然后我决定使用自定义运算符而不是compose函数.自定义 *** 作符是……起初我刚刚复制了compose函数并将其名称更改为…以下是它的样子:

let odd = not..even

这里Xcode给出了错误:“一元运算符实现必须有’前缀’或’后缀’修饰符”

之后我将 *** 作符更改为:

let array = [1,2,3,4]array.map((+1))

奇怪的功能:

prefix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(r : A) -> (A -> A) {    return { l in l + r }}postfix func +<A : protocol<IntegerliteralConvertible,IntegerArithmeticType>>(l : A) -> (A -> A) {    return { r in l + r }}

或者作为封闭:

let l = [Int](1...10) /// [1,4,5,6,7,8,9,10]l.map(+5) /// [6,10,11,12,13,14,15]

这段代码很有效.现在我知道也许这里没有任何好处.. *** 作符在这里讨好,但我想知道为什么不允许咖喱 *** 作符?例如,如果运算符被定义为currIEd函数,我们将做这样的事情:

l.map({ x in x + 5 })
解决方法 您需要一些称为运算符部分的东西,或者能够在左侧或右侧部分应用二元运算符.不幸的是,Swift只允许完全没有问题的 *** 作符,这意味着你必须要有一点创意.如果我们将运算符视为二元函数op:(A,A) – > A,然后它的咖喱形式,咖喱 *** 作:A – > A – > A,只是一个返回一元函数的一元函数.我们可以使用分别模拟左右分区的自定义前缀和后缀运算符来伪装它.

这是前缀和后缀

这允许您编写诸如此类的代码

而不是旧的

总结

以上是内存溢出为你收集整理的Curried中缀 *** 作符在swift中.可能吗?全部内容,希望文章能够帮你解决Curried中缀 *** 作符在swift中.可能吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1008464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存