假设我有一个类型为整数的列表[blah; blah; blah; ...],我不知道lis的大小,我想模式匹配而不打印列表的第一个元素。有没有办法在不使用if else情况或语法错误的情况下执行此操作? 因为我要做的就是解析一个看起来像/ path / to / blah / blah /../ file.c的文件 并且只打印路径/到/ blah / blah
例如,可以这样做吗?let out x = Printf.printf " %s \n" x
let _ = try
while true do
let line = input_line stdin in
...
let rec f (xpath: string list) : ( string list ) =
begin match Str.split (Str.regexp "/") xpath with
| _::rest -> out (String.concat "/" _::xpath);
| _ -> ()
end
但如果我这样做,我在String.concat !!
行有一个语法错误答案 0 :(得分:0)
String.concat "/" _::xpath
并不意味着什么,因为_
是模式但不是值。 _
可用于模式匹配的左侧部分,但不能用于右侧部分。
您要做的是String.concat "/" rest
。
即使_::xpath
正确,String.concat "/" _::xpath
也会被解释为(String.concat "/" _)::xpath
,而您希望将其解释为String.concat "/" (_::xpath)
。