标签: let

无法在 F# 中使用 let 关键字定义递归方法

我正在用 VS 学习 F#。

你能告诉我为什么编译器用下面的代码给我一个错误 FS3118 吗?

sumToN 之前的“let”在线条下用红色标记...

FS3118:不完整的值或函数定义。如果这是在表达式中,则表达式的主体必须缩进与“let”关键字相同的列。

open System
[<EntryPoint>]
let main argv =
   let sumToN n = let rec f s n = if n > 0L then f (s+n) (n-1L) else s in f 0L n
   //let sum = sumToN(5L)
   //do printfn "%i" sum |> ignore
    0
Run Code Online (Sandbox Code Playgroud)

我应该如何更正代码?

recursion f# function let

0
推荐指数
1
解决办法
92
查看次数

我们可以在 Swift 中编辑“let”协议属性的属性吗?

我有一个这样的代码(在操场上玩:

protocol ServiceProtocol {
    var enabled: Bool { get set }
}

class Service: ServiceProtocol {
    var enabled: Bool = false
}

class A {
    let service = Service()
}

class B {
    let service: ServiceProtocol = Service()
}

let a = A()
let b = B()

a.service.enabled = false
b.service.enabled = false // <-- the error is here: Cannot assign to property: 'service' is a 'let' constant
Run Code Online (Sandbox Code Playgroud)

如果我引用serviceService(class A),则一切都按预期进行。在 class 中Bservice …

let swift swift-protocols

0
推荐指数
1
解决办法
102
查看次数

里面的函数 let not Num

我有这些

data Fruit = Peach | Apple | Pear | Lemon | Fig deriving (Show,Eq)
data FTree = Bud | Split FTree FTree | Flat Fruit FTree deriving (Show,Eq)
Run Code Online (Sandbox Code Playgroud)

这意味着计算输入的水果类型的出现次数

ftreeFOccurs cft ft =
  let ftFO Bud = 0
      ftFO (Flat frt ft) = if (frt == cft) then (1 + (ftFO ft)) else (ftFO ft)
      ftFO (Split ft1 ft2) = (Split (ftFO ft1) (ftFO ft2))
  in ftFO ft
Run Code Online (Sandbox Code Playgroud)

这将是一棵典型的树

Split (Split Bud Bud) (Flat Fig (Flat Lemon (Flat Apple …
Run Code Online (Sandbox Code Playgroud)

tree haskell let

0
推荐指数
1
解决办法
60
查看次数

livedata observable Kotlin 的 lambda 表达式中的“让”是什么意思

我想知道是否有人可以向我解释在带有 livedata 的 lambda 表达式中让这个词。只是打印lamda表达式吗?我猜有些人用它来不再获得空指针异常?

wordViewModel.allWords.observe(this, Observer { value -> 
    value?.let { /*DO SOMETHING WITH VALUE ('IT')*/ }
})
Run Code Online (Sandbox Code Playgroud)

lambda android let kotlin

-1
推荐指数
1
解决办法
277
查看次数

让vs以单调的价值观去做

使用letdo尝试使用Monadic值有什么区别?(不确定这是否是表达它的正确方法)

例如:

--import System.Random

*Main> dupRand = let i = randomRIO (1, 10) in sequence [i, i]
*Main> :t dupRand
dupRand :: (Random a, Num a) => IO [a]
*Main> dupRand
[8,3]
*Main> dupRand
[2,9]
*Main> dupRand
[9,5]

*Main> dupRand2 = do i <- randomRIO (1, 10); pure [i, i]
*Main> :t dupRand2
dupRand2 :: (Random a, Num a) => IO [a]
*Main> dupRand2
[6,6]
*Main> dupRand2
[9,9]
*Main> dupRand2
[5,5]
Run Code Online (Sandbox Code Playgroud)

为什么在中dupRand2,该函数成功复制了一个随机值,而在中dupRand,该函数看起来好像它生成了两个随机值?

random monads haskell let

-1
推荐指数
1
解决办法
99
查看次数

var 数组和 let 数组的区别?

我正在 Swift 中学习数组,在我的书中他们首先写道:

let numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

但是然后写:

var numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我知道这let表示常量var指代变量,但实际上声明为常量的数组和声明为变量的数组有何不同?

arrays xcode var let swift

-2
推荐指数
1
解决办法
1192
查看次数

标签 统计

let ×6

haskell ×2

swift ×2

android ×1

arrays ×1

f# ×1

function ×1

kotlin ×1

lambda ×1

monads ×1

random ×1

recursion ×1

swift-protocols ×1

tree ×1

var ×1

xcode ×1