小编sag*_*aga的帖子

lua中同时定义和调用函数

在 javascript 中,可以通过同时定义和调用函数来快速创建闭包,如下所示:

function() {
    local something = 1;
    return function () {
        // something
    }
}()
Run Code Online (Sandbox Code Playgroud)

是否可以在 中做同样的事情lua

javascript lua closures

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

如何增加向量中的每个数字而没有错误"不能一次多次借用可变的"?

此代码应该将向量中的每个值递增1:

fn main() {
    let mut v = vec![2, 3, 1, 4, 2, 5];
    let i = v.iter_mut();
    for j in i {
        *j += 1;
        println!("{}", j);
    }
    println!("{:?}", &mut v);
}
Run Code Online (Sandbox Code Playgroud)

由于Rust的借用规则,它不起作用:

error[E0499]: cannot borrow `v` as mutable more than once at a time
 --> src/main.rs:8:27
  |
3 |     let i = v.iter_mut();
  |             - first mutable borrow occurs here
...
8 |     println!("{:?}", &mut v);
  |                           ^ second mutable borrow occurs here
9 | }
  | - …
Run Code Online (Sandbox Code Playgroud)

vector rust borrow-checker

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

这是`std :: mem :: drop`的有效实现吗?

根据The Rust Programming Language,ch15-03,std::mem::drop获取一个对象,接收它的所有权,并调用它的drop功能.

这就是这段代码的作用:

fn my_drop<T>(x: T) {}

fn main() {
    let x = 5;
    let y = &x;
    let mut z = 4;

    let v = vec![3, 4, 2, 5, 3, 5];

    my_drop(v);
}
Run Code Online (Sandbox Code Playgroud)

这是做什么的std::mem::drop?它是否执行除此之外的任何其他清理任务?

destructor memory-management rust

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

从 clojure 中的函数返回列表

我想从 clojure 函数返回一个列表。我怎么做。我尝试了以下方法:

(lst val)
Run Code Online (Sandbox Code Playgroud)

这失败了,因为 lst 不是IFn.

'(lst val)
Run Code Online (Sandbox Code Playgroud)

这将返回两个符号lst和的列表val。我要的是回到它包含的值的列表lstval。我怎么做?

return function list clojure

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

Map.keySet 什么时候返回 null

我读一些代码,检查返回值的Map.keySetnull。javadoc 没有说明Map.keySet. 如果 Map 不包含任何内容,则它是一个空集。

当可以通过值返回Map.keySetBE null

java null dictionary set

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

删除GHCI中定义的功能

我开始学习haskell并发现自己不得不一次又一次地重新启动repl,因为我为一个函数定义了不正确的特化,我不知道如何删除它们.

例如,假设我将基本案例放在n == 0一般情况下作为阶乘函数的错误:

fact n = n * fact(n-1)
fact 0 = 1
Run Code Online (Sandbox Code Playgroud)

这显然是错误的,现在如果我重复一般情况,它将被添加到当前列表,给我3个重载fact.

如何删除我定义的第一个案例,或者删除所有fact可能的定义.是否可以删除我在GHCI中定义的功能?如果有,怎么样?

haskell ghci

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

类型推导如何在这个Docopt示例中工作?

使用docopt库查看此代码:

const USAGE: &'static str = "...something...";

#[derive(Deserialize)]
struct Args {
    flag: bool,
}

type Result<T> = result::Result<T, Box<error::Error + Send + Sync>>;

fn main() {
    let mut args: Args = Docopt::new(USAGE)
        .and_then(|d| d.deserialize())
        .unwrap_or_else(|e| e.exit());
}
Run Code Online (Sandbox Code Playgroud)

如果你看一下等号右边的表达式,你会发现它没有在Args任何地方提到结构.编译器如何推导出该表达式的返回类型?类型信息可以在Rust中以相反的方向(从初始化目标到初始化表达式)流动吗?

type-inference rust type-deduction docopt

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

什么是 Kotlin 在 Rust 中的“reduce”操作的替代方法?

我遇到了这个竞争性编程问题:

  1. nums是整数向量(长度n
  2. ops是包含+-(length n-1)的字符串向量

可以通过reduceKotlin 中的操作来解决,如下所示:

val op_iter = ops.iterator();
nums.reduce {a, b ->
    when (op_iter.next()) {
        "+" -> a+b
        "-" -> a-b
        else -> throw Exception()
    }
}
Run Code Online (Sandbox Code Playgroud)

reduce 被描述为:

从第一个元素开始累加值,并从左到右应用操作到当前累加器值和每个元素。

看起来 Rust 向量没有reduce方法。你将如何完成这项任务?

collections reduce functional-programming rust

2
推荐指数
2
解决办法
2480
查看次数

检查元组是否包含某种类型的元素

我正在尝试通过实现一些功能来学习 C++ 模板元编程。我知道已经在 stackoverflow 上提供了这个特定问题的解决方案,我感兴趣的是了解为什么这个解决方案不起作用。这是代码:

template < std::size_t... Ns , typename... Ts >
auto tail_impl( std::index_sequence<Ns...> , std::tuple<Ts...> t )
{
   return  std::make_tuple( std::get<Ns+1u>(t)... );
}

template <class F, class... R >
tuple<R...> tail( std::tuple<F,R...> t )
{
   return  tail_impl( std::make_index_sequence<sizeof...(R)>() , t );
}


template<class X, class F, class... R>
constexpr bool check_for_type(tuple<F,R...> t) {
    if constexpr(is_same<F,X>::value) {
        return true;
    } 
    return check_for_type<X>(tail(t));
}


template<class X>
constexpr bool check_for_type(tuple<> t) {
    return false;
}


int main( int …
Run Code Online (Sandbox Code Playgroud)

c++ templates metaprogramming template-meta-programming

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

在clojure中双重递归

我有一个clojure程序,其中两个函数递归地相互调用:

(defn f1
...
(f2 ...)
)


(defn f2
...
(f1 ...)
)
Run Code Online (Sandbox Code Playgroud)

编译器发出错误f1.它说f2没有定义.有没有办法declare在clojure中使用函数.我可以验证递归实际终止.

functional-programming clojure mutual-recursion

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

为什么我收到此代码的“接收器类型不匹配”错误

看看这段代码:

import Moves.*
import ReverseMoves.*

interface Move {
    val opp : Move
}

enum class Moves(override val opp: Move) : Move {
    U(U_),
    R(R_),
    L(L_),
    D(D_),
    F(F_),
    B(B_),
}

enum class ReverseMoves(override val opp: Move) : Move {
    U_(U),
    R_(R),
    L_(L),
    D_(D),
    F_(F),
    B_(B),
}
val cornerMapping: Map<Move, IntArray> = mutableMapOf(
    U to intArrayOf(1, 2, 4, 3),
    R to intArrayOf(2, 6, 8, 4),
    L to intArrayOf(1, 3, 7, 5),
    D to intArrayOf(7, 8, 6, 5),
    F to intArrayOf(3, 4, 8, …
Run Code Online (Sandbox Code Playgroud)

generics types kotlin

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

为什么 fs::read_dir() 在 Result&lt;DirEntry, Error&gt; 上返回迭代器

这段代码Ok在我的系统上打印了几个s:

use std::fs;

fn main() {
    fs::read_dir("/home").unwrap().for_each(|e| {
        println!("{:?}", e);
    });
}
Run Code Online (Sandbox Code Playgroud)

我需要unwrapDirEntry使用前元素。

国家的文件fs::read_dir

返回目录中条目的迭代器。

迭代器将产生 的实例io::Result<DirEntry>。在最初构造迭代器后可能会遇到新的错误。

文档在谈论什么样的错误?它是安全unwrapResult

error-handling rust

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

Java:告诉JVM将所有字段/方法视为公共字段

我正在浏览一个java代码库,并认为如果我能暂时将所有字段和方法公开,那么看看软件如何工作会容易得多.

访问说明符基本上是程序员遵循的指导原则while he is coding(例如,使用setter而不是直接赋值,以允许setter执行与该字段相关的其他工作).是否有可能告诉jvm在运行java程序时忽略访问限制器?

另一种可能性是使用一些IDE插件手动更改所有内容的可见性public.

java testing jvm public

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