小编jus*_*tin的帖子

使用构造函数参数使用反射实例化对象

我试图弄清楚如何用反射实例化一个案例类对象.这有什么支持吗?我最接近的是查看scala.reflect.Invocation,但这似乎更适合执行作为对象一部分的方法.

case class MyClass(id:Long, name:String)

def instantiate[T](className:String)(args:Any*) : T = { //your code here }
Run Code Online (Sandbox Code Playgroud)

接近我正在寻找的API.

任何帮助,将不胜感激.

reflection scala

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

是否有可能在Haskell中创建一个类似Scala 2.8的集合api?

Scala集合api有一些非常有趣的属性,我想知道如何在Haskell中实现它; 或者如果它甚至可能(或者一般来说是一个好主意).我有点像哈斯克尔新手,所以我想听听你的想法.

scala映射定义如下所示:

def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That
Run Code Online (Sandbox Code Playgroud)

此API的一个有趣特性是,如果映射字符串并且map函数返回一个字符,则结果将是string类型(而不是字符列表).

api collections haskell scala

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

F#引用对象图

在C#中,我可以使用表达式树很容易地创建对象图的字符串表示.

public static string GetGraph<TModel, T>(TModel model, Expression<Func<TModel, T>> action) where TModel : class
{
            var method = action.Body as MethodCallExpression;
            var body = method != null ? method.Object != null ? method.Object as MemberExpression : method.Arguments.Any() ? method.Arguments.First() as MemberExpression : null : action.Body as MemberExpression;
            if (body != null)
            {
                string graph = GetObjectGraph(body, typeof(TModel))
                return graph;
            }
            throw new Exception("Could not create object graph");
}
Run Code Online (Sandbox Code Playgroud)

在F#中我一直在看引文试图做同样的事情,并且无法弄明白.我曾尝试使用PowerPack库将引用转换为Expression,但到目前为止还没有运气,而且互联网上的信息在这个主题上看起来相当稀少.

如果输入是:

let result = getGraph myObject <@ myObject.MyProperty @>
Run Code Online (Sandbox Code Playgroud)

输出应为"myobject.MyProperty"

f# quotations

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

F#报价评估问题

我遇到了F#powerpack报价评估的问题.

open Microsoft.FSharp.Linq.QuotationEvaluation

let print x = System.Console.WriteLine(sprintf "%A" x)

type record = { x:int; y:int }
let val1 = { x = 1; y = 1; }
let val2 = { x = 1; y = 1; }
let result = val1 = val2
print result

let quote = <@ let value1 = { x = 1; y = 1; }
               let value2 = { x = 1; y = 1; }
               let result2 = value1 = value2
               result2 …
Run Code Online (Sandbox Code Playgroud)

f# quotations

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

标签 统计

f# ×2

quotations ×2

scala ×2

api ×1

collections ×1

haskell ×1

reflection ×1