「>>」を使用せずに2つの関数を同じ文字列に適用する方法

StackOverflow https://stackoverflow.com/questions/2540324

  •  23-09-2019
  •  | 
  •  

質問

私はこのような機能を書いています。

func :: IO()
func = putStr print "func = putStr print"

私はそれが間違っていることを知っていますが、アイデアは私が欲しいということです putStr その後、文字列に適用されます print 同じ文字列に適用されます "fun = .." 出力が次のようになります。

func = putStr print "func = putStr print"

これは私の関数定義と同じです。ありがとう

役に立ちましたか?

解決

一般的なタイプに静的なフィールドを持つことは問題ありません。私の推測は、あなたがそれを認識していなかった場合には、R#はあなたがただ警告しているということです。

それ以来の例:

using System;

public class Generic<T>
{
    // Of course we wouldn't normally have public fields, but...
    public static int Foo;
}

public class Test
{
    public static void Main()
    {
        Generic<string>.Foo = 20;
        Generic<object>.Foo = 10;
        Console.WriteLine(Generic<string>.Foo); // 20
    }
}
.

参照できるように、Generic<string>.FooGeneric<object>.Fooからの異なるフィールドです。

他のヒント

あなたが「使わずにどこに行くのかわかりません >>「パート(それが本当にポイントの使用である場合 do-notation)、ただし、同じ入力に順番に2つの関数を適用するヘルパー関数を簡単に書き込むことができます。

tee f g s = f s >> g s

func = tee putStr print "..."

また、文字列を繰り返すことを避けるために、ローカル変数 let また where おそらく最も簡単でしょう:

let s = "..."
in  putStr s >> print s

あなたはこのようにそれをすることができます:

doActions str actions = mapM_ ($ str) actions
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top