0

最終目標: 整数を長い手書きに変換します。

私はこれについていくつかの議論を見てきましたが、私の頭にはありません。文字列を喜んで分割して文字を出力する関数に出くわしましたが、それらを配列にキャプチャすることは不可能に思えます。

個々の文字は添え字でアクセスできるようですが、操作はできません。

コメントアウトを削除すると、次のように 1,2,9,.,5,0 が出力されますが、if ループを実行すると、数値文字列が書き込まれますが、順序が間違っています。

let sentence = "129.50"
for (character) in sentence {
  //  print(character)
        if character == "0" {
        print("zero")
    }
        if character == "1" {
            print("one")
    }
        if character == "2" {
        print("two")
    }

                etc etc

また、関数を介してインデックス作成関数にアクセスしようとしましたが、最後に常にクラッシュするたびに完全に出力されます。

func speakNum(_ num:Int) {
    let strgNum = String(num)
    for t in 0...strgNum.count {
        let index = strgNum.index(strgNum.startIndex, offsetBy:t)
        //strgnum.index(strgNum.startIndex, offsetBy:t)
      print(String(strgNum[index]))
    }
}

どんな助けでも感謝します。

4

3 に答える 3

1

これは、TDD を学ぶ絶好の機会です。テスト駆動開発。考えられる最も単純なケースから始めます...

assert(writtenOut("1") == "one")

上記を機能させてから、別のテストを追加します。

assert(writtenOut("1") == "one")
assert(writtenOut("2") == "two")

すべての数字と小数について上記を行います。エラーケースも処理する必要があります。

assert(writtenOut("d") == "")

次に、より複雑なものを試してください。

assert(writtenOut("12") == "one two") // or do you want "twelve" in this case?

これは自分で行うことができます。最初は小さく始めて、上に向かって進んでください。作業が完了する頃には、機能する関数と、それが機能することを証明する一連のテストが用意されています。

于 2018-09-03T00:14:13.887 に答える