内容简介:翻译自:https://stackoverflow.com/questions/4111774/can-i-use-the-pipeline-operator-in-f-to-pass-an-argument-to-a-constructor
此代码反转字符串:
let reverse (s : string) = new string(s.ToCharArray() |> Array.rev)
可以使用管道运算符重写它以将所需的参数传递给string()构造函数吗?例如,这似乎更惯用:
// Doesn't compile: let reverse (s : string) = s.ToCharArray() |> Array.rev |> new string
同样,为什么我不能以下列方式使用字符串运算符?
let reverse2 (s : string) = s.ToCharArray() |> Array.rev |> string
这是在行动:
> reverse2 "foo" ;; val it : string = "System.Char[]"
它返回的类型而不是“oof”.
不,管道运算符只能与F#函数一起使用,它不能与类构造函数,成员方法或静态方法一起使用.原因是这些方法支持的重载会使F#的类型推断变得复杂.但是,如果您真的想使用管道,可以将char数组的每个元素映射到String,然后将该序列传递到Seq.concat“”:
s.ToCharArray() |> Array.rev |> Seq.map(string) |> String.concat ""
或者你可以用F#方法包装字符串构造函数调用:
let stringCArrCtor (carr: char[]) =
new string(carr)
s.ToCharArray() |> Array.rev |> stringCArrCtor
并回答你的最后一个问题,
s.ToCharArray() |> Array.rev |> string
不能使用,因为它相当于
(s.ToCharArray() |> Array.rev).ToString()
并且不会覆盖Array ToString()方法,因此它只返回默认的反射类型名称.
翻译自:https://stackoverflow.com/questions/4111774/can-i-use-the-pipeline-operator-in-f-to-pass-an-argument-to-a-constructor
以上所述就是小编给大家介绍的《我可以使用F#中的管道运算符将参数传递给构造函数吗?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- ES6—扩展运算符和rest运算符(6)
- C/C++三元运算符实际上是否具有与赋值运算符相同的优先级?
- Python 运算符
- Python算术运算符
- 004.Python运算符
- JavaScript③运算符
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Facebook效应
[美] 大卫·柯克帕特里克 / 沈路、梁军、崔筝 / 华文出版社 / 2010-10 / 49.80
本书作者近距离地采访了与Facebook相关的人士,其中包括Facebook的创始人、员工、投资人、意向投资人以及合作伙伴,加起来超过了130人。这是真切详实的访谈,更是超级精彩的故事。作者以其细腻的笔触,精巧的叙事结构,解密了Facebook如何从哈佛的宿舍里萌发,创始人的内讧,权力之争,如何放弃华盛顿邮报的投资,怎样争取到第一个广告客户,而第一轮融资又如何获得一亿美元的估值,让人痴迷的图片产品......一起来看看 《Facebook效应》 这本书的介绍吧!