Какой самый простой способ разбить строку на список символов? - PullRequest
0 голосов
/ 30 сентября 2018

Похоже, что это описывается модулем Str в документации API, но в соответствии с эта проблема открыта это упущение.

1 Ответ

0 голосов
/ 30 сентября 2018

Это, пожалуй, самый простой, хотя, конечно, не самый эффективный:

let split = s =>
    s |> Js.String.split("")
      |> Array.to_list
      |> List.map(s => s.[0])

Это более эффективный и кроссплатформенный:

let split = s => {
    let rec aux = (acc, i) =>
        if (i >= 0) {
          aux([s.[i], ...acc], i - 1)
        } else {
          acc
        }

    aux([], String.length(s) - 1)
}

Я так не думаюобычно имеет смысл преобразовать строку в список, поскольку преобразование будет иметь значительные накладные расходы независимо от метода, и было бы лучше просто выполнить итерацию строки напрямую.Если это имеет смысл, вероятно, когда строки достаточно малы, разница между первым и вторым методом не имеет большого значения.

...