Я сделал следующую функцию F #, которая будет получать URL-адрес из HTML-содержимого веб-страницы:
let getPicUrl (urlContents : string) =
let START_TOKEN = "jpg_url="
let startIndex = urlContents.IndexOf(START_TOKEN)
let endIndex = urlContents.IndexOf("&", startIndex)
let s = startIndex + START_TOKEN.Length
let l = endIndex-startIndex-START_TOKEN.Length
urlContents.Substring(s, l)
На самом деле последняя строка, urlContents.Substring(s, l)
, нужна только s
и l
, поэтому мне было интересно, смогу ли я преобразовать части этой функции в некоторые внутренние функции, чтобы мои намерения были более ясными. В идеале getPicUrl
будет иметь только 2 let
инструкции, s
и l
, а все остальные будут внутренними определениями для этих let
инструкций. Если это может быть каким-либо образом достигнуто или нет, это другая история ..
Единственный очевидный способ улучшения кода, который я могу представить на данный момент, - это поменять местами endIndex
, чтобы мы получили
let getPicUrl (urlContents : string) =
let START_TOKEN = "jpg_url="
let startIndex = urlContents.IndexOf(START_TOKEN)
let s = startIndex + START_TOKEN.Length
let l =
let endIndex = urlContents.IndexOf("&", startIndex)
endIndex-startIndex-START_TOKEN.Length
urlContents.Substring(s, l)
но я продолжаю задаваться вопросом, был бы более ясный способ организовать определения let
этой функции.