标签: parameterization

Scala:如何制定泛型类的参数类型的要求?

我正在创建一些参数化类C [T],我想对类型T的特性做出一些要求,以便能够成为我的类的参数.如果我只想说T继承自traits或class(就像我们使用Ordering一样),那就简单了.但我希望它也能实现一些功能.

例如,我已经看到许多预定义类型实现MinValue和MaxValue,我希望我的类型T也实现它们.我收到了一些建议来定义隐式函数.但我不希望所有用户在已经实现的情况下被迫为这些实现此功能.我也可以在我的代码中实现它们,但它似乎只是一个糟糕的快速修复.

例如,在定义堆时,我想允许用户构造一个空堆.在这些情况下,我想用T类型可能具有的最小值来实现值.显然这段代码不起作用.

class Heap[T](val value:T,val heaps:List[Heap[T]]){
    def this()=this(T.MinValue,List())
}
Run Code Online (Sandbox Code Playgroud)

我也很想收到关于真正好的在线Scala 2.8参考资料的一些建议.

requirements scala parameterization

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

将参数添加到独立于供应商的IDataParameterCollection的更简洁方法?

在我们拥有的每个ADO.NET连接器上AddWithValue,因此添加参数是轻而易举的.令我感到惊讶的是,这种过载是不可用的,IDataParameterCollection甚至是不可用的DbParameterCollection.在编写独立于供应商的层(针对接口编码)时,如何以最小的麻烦(来自调用方和被调用方)实现相同的目标?

现在我做:

public void Execute(string query, Action<IDbCommand> parameterizer)

Execute(query, cmd =>
    {
        var param = cmd.CreateParameter();
        param.ParameterName = "user_id";
        param.Value = 1;
        cmd.Parameters.Add(param);

        param = cmd.CreateParameter();
        param.ParameterName = "mf";
        param.Value = "6CE71037";
        cmd.Parameters.Add(param);
    });
Run Code Online (Sandbox Code Playgroud)

那是太多的工作不是吗.否则我可以更改签名:

public void Execute(string query, IEnumerable<KeyValuePair<string, object>> parameters)

var parameters = new Dictionary<string, object> 
                 { { "user_id", 1 }, { "mf", "6CE71037" } };
Execute(query, parameters);
Run Code Online (Sandbox Code Playgroud)

这种方法要求我在被调用者(Execute方法)中编写另一个循环.这几乎是我想要的,但只是看看是否有更简洁的方法.比如这样:

public void Execute(string query, Action<IDataParameterCollection> parameterizer)

Execute(query, p =>
    {
        p["user_id"] …
Run Code Online (Sandbox Code Playgroud)

c# ado.net interface mysql-connector parameterization

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

Beta 二项式和 Beta 分布的 alpha 和 beta 估计

我正在尝试将我的数据拟合到 beta 二项式分布并估计 alpha 和 beta 形状参数。对于此分布,先验值取自 beta 分布。Python 没有用于 beta-binomial 的 fit 函数,但它有用于 beta 的函数。python beta 拟合和 R beta 二项式拟合很接近,但系统性地关闭。

回复:

library("VGAM")
x = c(222,909,918,814,970,346,746,419,610,737,201,865,573,188,450,229,629,708,250,508)
y = c(2,18,45,11,41,38,22,7,40,24,34,21,49,35,31,44,20,28,39,17)
fit=vglm(cbind(y, x) ~ 1, betabinomialff, trace = TRUE)
Coef(fit)
   shape1    shape2 
  1.736093 26.870768
Run Code Online (Sandbox Code Playgroud)

Python:

import scipy.stats
import numpy as np
x = np.array([222,909,918,814,970,346,746,419,610,737,201,865,573,188,450,229,629,708,250,508], dtype=float)
y = np.array([2,18,45,11,41,38,22,7,40,24,34,21,49,35,31,44,20,28,39,17])
scipy.stats.beta.fit((y)/(x+y), floc=0, fscale=1)
    (1.5806623978910086, 24.031893492546242, 0, 1)
Run Code Online (Sandbox Code Playgroud)

我已经这样做了很多次,似乎 python 系统地比 R 结果低一点。我想知道这是我的输入错误还是计算方式的不同?

python beta r parameterization scipy

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

如何将变量传递到 JQ select/contains 查询中

我正在尝试将两个变量传递到 jq 查询中。

我的 JSON

 {
 "AlbumTitle": "Name Of Album",
 "AlbumLink": "/album/link/id/1/album-name/",
 "ArtistName": "Artist Name",
 "Date": "September 14, 2018"
 },
 {
 "AlbumTitle": "Name Of Album",
 "AlbumLink": "/album/link/id/2/album-name/",
 "ArtistName": "Artist Name",
 "Date": "September 13, 2018"
 }
Run Code Online (Sandbox Code Playgroud)

我有两个变量作为日期和艺术家姓名,我试图根据变量拉回 ArtistLink。

我用的是下面的JQ线。

 cat test.json | jq -n -r --arg TESTDATE "$TESTDATE" '.. | objects | {select(.Date == '"$TESTDATE"')} | select(.ArtistName | contains('"$test1"')) | .AlbumLink'
Run Code Online (Sandbox Code Playgroud)

我收到错误

 "jq: error: syntax error, unexpected '(', expecting '}'      (Unix shell quoting issues?) at <top-level>, line 1:
 .. | objects …
Run Code Online (Sandbox Code Playgroud)

json parameterization jq

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

获取scala中参数化类的实例的参数化类型

我是斯卡拉的新人.我需要得到一个类的参数化.我怎样才能做到这一点 ?这个类看起来像这样:

   class OutPort[T](name: Symbol, owner: Component) extends Port[T](name)
Run Code Online (Sandbox Code Playgroud)

我在LinkedList中获得了许多OutPorts.在另一个类中,我想获得OutPort实例的参数化,但参数化是任意的,并且isInstanceOf的解决方案不具备.是否有一种特殊的方法用于此目的,我还没有涵盖呢?

Lunatikz

scala parameterization

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

我的数组的Scala参数化假定为String?

我已经阅读了一些关于Manifest和擦除避免技术的内容,这些技术允许Scala执行"new Array [Array [T]]"之类的操作,但我对这个有点难过....

我有一种方法可以将数组中的一堆行列表为电子表格.例如,想象一下像这样的2D数组:

11,   5,    4
8,    3,    7
2,    1,    4
Run Code Online (Sandbox Code Playgroud)

我写了一个方法,总结了该数组的列,并吐出了像[21,9,15]这样的一维数组

我想将它泛化为Ints(比如Doubles或Floats),当我添加参数和清单时,我得到编译错误.

这是代码

def sumGrid[T](grid: Array[Array[T]])(implicit m: ClassManifest[T]): Array[T] = {

  val sum = new Array[T](grid(0).size)

  for(i <- 0 until grid.size) {
    for(j <- 0 until grid(0).size) {
      sum(j) = sum(j) + grid(i)(j)
    }
  }  
  sum
}
Run Code Online (Sandbox Code Playgroud)

这是编译错误:

[ERROR] ...scala/euler/GridOperations.scala:126: error: type mismatch;
[INFO]  found   : T
[INFO]  required: String
[INFO]         sum(j) = sum(j) + grid(i)(j)
[INFO]                                  ^
[ERROR] one error found
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?为什么String"必需"?

scala parameterization

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

pytest参数化装饰器不使用**kwargs

在我的测试代码中,我有以下内容:

@pytest.mark.parametrize(("title", "description", 'site'), [
                        ("abc", "this is a proper description","minecraft.net"),
                        ("proper title","short","minecraft.net"),
                        ("proper title", "this is a proper description","bol"),
                        ("","this is a proper description","minecraft.net"),
                        ("proper title","","minecraft.net"),
                        ("proper title","this is a proper description",""),
                        ("proper title","this is a proper description","ftp://myftp.nl")
        ])
@ae_test(loggedin = True)
def test_mod_model_create_validation(title, description,site):
    ... testing code ....
Run Code Online (Sandbox Code Playgroud)

所以,参数化函数试图参数化我自己的@ae_test装饰器返回的函数,如下所示:

def ae_test(prob=1.00,loggedin=False,is_admin=False):
    def create_wrapper(func):
        def run_test(*args,**kwargs):
            ... test setup code ...
            func(*args,**kwargs)
            ... test teardown code ...
Run Code Online (Sandbox Code Playgroud)

到目前为止,这对我的所有测试都有效,但参数化函数抱怨:

ValueError: <function run_test at 0x1029b55f0> has no argument 'title' …
Run Code Online (Sandbox Code Playgroud)

python exception parameterization pytest

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