小编Alp*_*lon的帖子

List Monads do-notation 中的 If-Then-Else

我试图理解 Monads 的概念,并遇到了这个列表理解语法,用于从 2 个列表中过滤总和。

largeSums = [i+j | i <- [10, 20, 30], j <- [1 , 2] , (i+j)>20]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 do 符号重写它,但不明白else部件内部的内容:

largeSums = do
              i <- [10, 20, 30]
              j <- [1 , 2]
              if i+j > 20
               then return (i+j)
               else 
Run Code Online (Sandbox Code Playgroud)

monads haskell

7
推荐指数
1
解决办法
116
查看次数

为什么 ConfigurationProperties 类中的嵌套类需要是静态的?

application.yml在 spring boot 应用程序中使用一个文件作为外部配置,它绑定到AppConfig.java使用@ConfigurationProperties注释。在里面AppConfig.java我有基于层次结构的嵌套类application.yml。当我static用来声明嵌套类时,一切正常。但最近在一个项目中,我错过static了其中一个嵌套类,结果导致NullPointerException. 通过在线资源,我已经阅读了何时使嵌套类静态化以及何时不使嵌套类变为静态。不过,我需要了解的是如何结合application.ymlAppConfig.java发生在春季启动,为什么嵌套类需static

应用程序.yml

spring:
  foo:
    host: localhost
  bar:
    endpoint: localhost
Run Code Online (Sandbox Code Playgroud)

应用程序配置文件

@Component
@ConfigurationProperties("spring")
public class AppConfig {
    private Foo foo;
    private Bar bar;
    public static class Foo {
        private String host;
        // getter, setter
    }
    public class Bar {
        private String host;
        // getter, setter
    }
    //getters, setters
}
Run Code Online (Sandbox Code Playgroud)

当我AppConfig.java在其他课程中自动装配时,appConfig.getFoo()工作正常但appConfig.getBar() …

java spring spring-boot

5
推荐指数
0
解决办法
6839
查看次数

如何取消延期结单

我有以下代码结构,其中我在 A 点锁定(),并且需要在同一函数中的 B 点绝对解锁()。在 A 点和 B 点之间,我根据需要 Unlock() 的错误进行了多次返回。使用defer lock.Unlock()A点解决了万一有错误的锁将被释放的问题。但是,如果执行成功到达 B 点 - 我该如何取消该 defer 和 Unlock() 呢?

func foo() {
    ...
    // point A
    lock.Lock()
    defer lock.Unlock()
    ...
    err := bar()
    if err != nil {
        return
    }
    ...
    //point B - need to definetely unlock here
    //lock.Unlock() ?
}
Run Code Online (Sandbox Code Playgroud)

mutex go

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

标签 统计

go ×1

haskell ×1

java ×1

monads ×1

mutex ×1

spring ×1

spring-boot ×1