1

使いたくないstring.reverse()代わりに自分のやり方を作りたい。しかし、私は失敗しています。どこで私は間違えましたか:

function wait(n)
  local now = os.time()
    while  os.time() - now < n do end
end

sit = "1234 1234"

function revers(sit)
 wait(1)
  local table = { " nil "}
    print(#sit, os.date("%M"))
      while #table < #sit do
        table.insert(table, #table+1, sit:find(".", #sit))
         print(#table, #sit)
          wait(1)
 end
 end

 revers(sit)
4

4 に答える 4

3

申し訳ありませんが、コードにはいくつかの基本的な問題があります。

  • 関数reversは何も返さない
  • この関数reversは、文字列ではなくテーブルの作成のみを試みます
  • Lua のテーブルにはnil、キーまたは値として を含めることはできません
  • sit:find(".",#sit)、検索に間違った一定の開始点を使用します
  • ...
  • まとめると紐を逆にするのにも近づきません

ジョブを実行する必要がある次のコードを理解してください。

function revers(s)
  local r = ""
  for i = 1,#s,1 do
    r = s:sub(i,i) .. r
  end
  return r
end
于 2013-09-18T22:03:56.373 に答える
0

問題は

local table = { " nil " }

予約語の後に変数名を付けることはできません。に変更すると

local mytable = { " nil " }

また、その後のすべての使用を次のように変更します。

function wait(n)
  local now = os.time()
    while  os.time() - now < n do end
end

sit = "1234 1234"

function revers(sit)
 wait(1)
  local mytable = { " nil "}
    print(#sit, os.date("%M"))
      while #mytable < #sit do
        mytable.insert(mytable, #mytable+1, sit:find(".", #sit))
         print(#mytable, #sit)
          wait(1)
 end
 end

 revers(sit)

ただし、これを行うより簡単な方法は次のとおりです。

function revers(sit)
  local mytable = { " nil "}
  for i = 0, #sit+1 do
    table.insert(mytable, string.sub(sit, #sit-i, #sit-i))
  end
end

テーブルには、文字列文字の配列が逆順で含まれるようになりました。

于 2013-09-18T22:03:44.807 に答える
0

の各文字をループしsitて、table. whileループの代わりにこれを使用してみてください

for c in str:gmatch"." do
    table.insert(table,c)
    -- or
    table = table .. c  -- the table shouldn't be initialized nil in this case
end
于 2013-09-18T22:05:58.153 に答える