在F#中,我可以在调用静态方法时省略类名吗?
示例:
在C#中,我可以做类似的事情:
using static Bizmonger.Patterns.MessageBus;
...
Publish("SOME_MESSAGE");
而不是:
MessageBus.Publish("SOME_MESSAGE");
我可以在F#中做这样的事情吗?
答案 0 :(得分:7)
在F#中,你可以在命名空间上使用open
(就像在C#中的using
一样)或在模块上使用(当你调用的API用F#编写时很有用),但不是静态类(这是调用C#库时所需要的)。
为了使代码更短,你可以做的一件事就是定义一个类型别名:
type M = Bizmonger.Patterns.MessageBus;
// Now you can write just
M.Publish("SOME_MESSAGE")
// Rather than writing the full
MessageBus.Publish("SOME_MESSAGE");
有一个feature request on the F# UserVoice允许在静态类上使用open
(就像在C#中一样),所以如果您希望这样做,请在那里进行投票和评论。
答案 1 :(得分:0)
我还了解到我可以实现一个函数来作为客户端调用的包装器。
创建包装函数
sh /var/www/test.sh
exit 0
<强>客户端强> 然后,客户端现在可以在不指定类名的情况下调用函数。
cd /home/jeff/test && rails s Puma -d