小编opt*_*kos的帖子

如何使用 Scala-native 构建静态链接的可执行文件?

我想使用 Scala Native 编写一个程序,但它必须在带有非常旧的 glibc 的 linux 主机(centos 6.5)上运行。所以我想将该程序部署为静态链接的可执行文件,例如 golang。

如何使用 Scala-native 构建静态链接的可执行文件?是否可以?如果是,我该怎么做?如果没有,为什么不呢?

scala static-linking scala-native

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

将数据传递到之前的视图控制器 VIPER

我在 iOS swift 中使用 VIPER 架构。我有 2 个视图控制器,比如说AB。首先,我将从A到,执行一些任务,然后从到B返回。使用 MVC 或 MVVM,我们可以创建协议并从到传输数据。但对于VIPER,我很困惑。这是我的 VIPER 代码 B,点击“后退”按钮时:BABA

看法:

@IBAction func backButtonTapped(_ sender: UIButton) {
    presenter?.goBack()
}
Run Code Online (Sandbox Code Playgroud)

主持人:

func goBack() {
    router.back()
}
Run Code Online (Sandbox Code Playgroud)

路由器:

func back() {
    viewController?.navigationController?.popViewController(animated: true)
    //here I want to send data back to previous viewcontroller
}
Run Code Online (Sandbox Code Playgroud)

我尝试在前一个控制器路由器中创建一种方法并通过该方法发送数据,但它不起作用,因为路由器没有任何演示者实例或除视图之外的任何其他实例。

popviewcontroller ios swift viper-architecture

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

仅在 ISO 标准 Ada 中,记录表示子句 + 任何其他语言功能如何可移植到小端和大端处理器?

不使用 nonstandard\xe2\x80\xa1 Scalar_Storage_Order 子句,如何通过记录表示子句结合任何其他语言功能的任意组合来可移植地表示 IPv4 标头,以便 \ xe2\x80\x9c相同的\xe2\x80\x9d 代码适用于小端和大端处理器,但以 IETF 称为网络字节的方式在线上发出(例如,通过以太网帧的有效负载) order(这是 IETF 对 big-endian 的奇特名称)。在 C 中,\xe2\x80\x9c相同的\xe2\x80\x9d 代码可以利用预处理器宏在小端处理器上执行字节交换,但在大端处理器上不执行任何操作,但标准 Ada 没有预处理器。在 C++ 中,\xe2\x80\x9c相同的\xe2\x80\x9d 代码可以利用元模板编程 (MTP) 在小端处理器上执行字节交换,但在大端处理器上不执行任何操作,但是标准 Ada 缺乏 MTP。

\n\n

(顺便说一句,当大端处理器与小端外设 IC 的内存映射寄存器接口时,设备驱动程序中也会出现同样的问题,反之亦然:小端处理器与大端 IC 接口时的内存映射寄存器。)

\n\n
    BytesPerWord : constant := 4;\n    BitsPerByte : constant := 8;\n    PowerOf2Highest : constant := BytesPerWord*BitsPerByte - 1; -- part #1 of byte-swap\n    type Header_IPv4 is record\n          Version   : integer range 0 ..    F#16;\n          IHL       : integer range 0 ..    F#16;\n          TOS       : integer …
Run Code Online (Sandbox Code Playgroud)

standards iso ada gnat ada2012

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

如果我通知操作已完成,是否应该使用 PublishSubject?

我正在学习Viperw/ RxSwift

我想通知我PresenterviewDidLoad我的ViewController.

为此,我有以下几点:

class LoginPresenter {

    weak var view: LoginView?
    var interactor: LoginUseCase?
    var router: LoginRouter?

    private(set) var viewDidLoad = PublishSubject<Void>()

    private lazy var disposeBag = DisposeBag()

    required init(view: LoginView?, interactor: LoginUseCase?, router: LoginRouter?) {
        self.view = view
        self.interactor = interactor
        self.router = router

        viewDidLoad
            .subscribe(onNext: { _ in
                // do something on viewDidLoad
            }).disposed(by: disposeBag)
    }
}
Run Code Online (Sandbox Code Playgroud)
class LoginViewController: UIViewController {

    var presenter: LoginPresenter?

    override func viewDidLoad() {
        super.viewDidLoad() …
Run Code Online (Sandbox Code Playgroud)

ios swift rx-swift viper-architecture

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

Cobra:在不使用包全局变量的情况下为子命令提供上下文?

我使用cobraviper编写了一个简单的 CLI 工具。我最近一直在重构它以避免包全局变量,很大程度上是因为事实证明很难使用例如建议的布局进行测试cobra init

代替...

var rootCmd = &cobra.Command{
  ...
}

func main() {
  rootCmd.Execute()
}
Run Code Online (Sandbox Code Playgroud)

我有更多类似的东西:

func NewCmdRoot() *cobra.Command {
  cmd := &cobra.Command{
    ...
  }

  return cmd
}

func main() {
  rootCmd := NewCmdRoot()
  rootCmd.Execute()
}
Run Code Online (Sandbox Code Playgroud)

这实际上效果很好,并且使测试更容易从一组干净的 cli 选项开始。我在将 Viper 集成到新方案中遇到了一些困难。如果我只关心 root 命令,我可以在PersistentPreRun 命令中进行设置,如下所示:

func initConfig(cmd *cobra.Command) {
  config := viper.New()
  rootCmd := cmd.Root()

  config.BindPFlag("my-nifty-option", rootCmd.Flag("my-nifty-option")); err != nil {

  // ...stuff happens here...

  config.ReadInConfig()

  // What happens next?
}

func NewCmdRoot() …
Run Code Online (Sandbox Code Playgroud)

command-line go cobra viper-go

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

无法使用毒蛇解组

我一直试图通过解组我的 json 文件来提取一些 JSON,但是,我不知道为什么它没有发生。我能够使用viper.AllSettings()但不能通过解组来获取数据。我想我犯了一个愚蠢的错误,请分享您的想法。github 链接是 - https://github.com/parthw/100-days-of-code/tree/main/golang/d6-cobra-viper-continued,代码如下。

main.go

package main

import (
    "fmt"

    "example.com/cobra-viper/cmd"
    "github.com/spf13/viper"
)

// Myconfig example
type Myconfig struct {
    username string `mapstructure:"username"`
}

func main() {
    cmd.Execute()
    fmt.Println("I can print this ", viper.AllSettings())
    var mc Myconfig
    if err := viper.Unmarshal(&mc); err != nil {
        fmt.Println(err)
    }
    fmt.Println(mc)
}
Run Code Online (Sandbox Code Playgroud)

在 cmd 目录中使用 cobra CLI 生成的代码:

package cmd

import (
    "fmt"
    "os"

    "github.com/spf13/cobra"

    homedir "github.com/mitchellh/go-homedir"
    "github.com/spf13/viper"
)

var (
    cfgFile string
    author  string
)

// …
Run Code Online (Sandbox Code Playgroud)

go cobra viper-go

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