Kri*_*ris 2 extension-methods d phobos
嘿伙计们,我正试图让这些语法对我有意义:
S[] split(S)(S s) if (isSomeString!S)
{
...
}
Run Code Online (Sandbox Code Playgroud)
和
string join(in string[] words, string sep)
{
...
}
Run Code Online (Sandbox Code Playgroud)
(如图所示phobos/src/std/string.d)
据我所知,这是一段允许我们做的事情的代码:
string[] parts = "/foo/bar/baz".split("/"); // string[] {"foo", "bar", "baz"}
string part = parts.join("-"); // string "foo-bar-baz"
Run Code Online (Sandbox Code Playgroud)
这基本上让我相信类似于我从CSharp中知道的扩展方法在d中是可能的.我遇到的问题是:
它们本身不是扩展方法,只是一些变成一个简洁功能的bug.
这两种方法之间的相似之处在于两者都有一个字符串作为第一个参数.所以在这里工作的技巧是给定一个数组T [] arr和一个函数
U foo (T[] t, other params)
Run Code Online (Sandbox Code Playgroud)
可以这样做
arr.foo(some arguments matching other params)
Run Code Online (Sandbox Code Playgroud)