首页 > 解决方案 > 返回元组的函数 (length_of_element,element)

问题描述

我想知道 OCAML 中是否有一种方法可以返回字符串列表的字符串元素的长度和元素本身?我想做这样的事情:

let (length_of_element,element) = List.map String.length ["Hello"; "World!"] in .....

我希望in关键字传递到代码的下一部分,length_of_element即元素“Hello”的长度(如果我们在循环 0)和元素本身的长度,即“Hello”(如果我们在在循环 0)

更新

let () =
        let t = Sys.time() in
        let args_n = Array.length Sys.argv - 1 in
        let args_list = Array.to_list (Array.sub Sys.argv 1 args_n) in
        List.iter (fun element ->
        let length_of_element = String.length element in
        let text = check_if_file(List.nth args_list 1) in
        let int_ls = search (to_list_ch element) text length_of_element) check_if_file(List.nth args_list 0 ) in
        if (List.length int_ls)> 1 then print_string "pattern found at characters "
        else if (List.length int_ls) = 1 then print_string "Pattern found at character "
        else print_string "No patterns found."
        ;
        print_ls int_ls;
        Printf.printf "Execution time: %fs\n" (Sys.time() -. t);;

在我这个函数的用例中,check_if_file(List.nth args_list 0 )是我的列表。

我试图实现Guillaume Melquiond在他的回答中告诉我的内容,但我收到了这个错误:

错误:语法错误:应为运算符。

(错误指向这一行:

let int_ls = search (to_list_ch element) text length_of_element) check_if_file(List.nth args_list 0 ) in

有人会是这个错误的来源吗?

任何帮助,将不胜感激。

标签: ocaml

解决方案


第二个问题。

(理想情况下,您应该在每个 StackOverflow 帖子中问一个问题。)

您提取的文本有 3 个右括号,只有 1 个左括号。这可能与您的语法错误有关。


推荐阅读