到目前为止,收益是我很难理解的.但现在我抓住了它.现在,在一个项目中,如果我返回List,Microsoft代码分析将发出警告.所以,通常我会做所有必要的逻辑部分并将列表作为IEnumerable返回.我想知道两者之间的区别.意味着我是否正在收益率或其他方式.
这是我展示的一个非常简单的例子,通常代码有点复杂.
private static IEnumerable<int> getIntFromList(List<int> inputList)
{
var outputlist = new List<int>();
foreach (var i in inputList)
{
if (i %2 ==0)
{
outputlist.Add(i);
}
}
return outputlist.AsEnumerable();
}
private static IEnumerable<int> getIntFromYeild(List<int> inputList)
{
foreach (var i in inputList)
{
if (i%2 == 0)
{
yield return i;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我能看到的一个重要好处是线路更少.但还有其他好处吗?我应该更改和更新返回IEnumearble以使用yield而不是List的函数吗?什么是最好的方式或更好的做事方式?
在这里,我可以在List上使用简单的lambda表达式,但通常情况并非如此,这个例子专门用于理解编码的最佳方法.
它说大多数高级动态类型语言都是反身的.维基百科上的反思(计算机编程)解释说,但它并没有真正给出它的含义.任何人都可以通过相关的例子以更简单的方式解释它吗?
我正在尝试FSharp数据提供程序,但使用npgsql对Postgresql.我在第一线被击败了.
当我尝试创建SqlDataConnection时,它会抛出错误,并显示连接字符串不正确的消息.
类型提供程序'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders'报告错误:不支持关键字:'port:5432; database'.
现在,我使用Servicestack.Ormlite测试连接字符串和数据.这基本上使用IdbConnection.所以,连接都是正确的.但我不知道为什么Type Provider不工作.
这是代码.
//type dbSchema = SqlDataConnection<ConnectionString = "Server=localhost;Port=5432; Database=TestDB;User Id=postgres;Password=g00gle*92;" >
[<CLIMutable>]
type Person =
{ ID : int;
FirstName : string;
LastName : string }
[<EntryPoint>]
let main args =
let dbFactory =
OrmLiteConnectionFactory
(
"Server=localhost;Port=5432; Database=TestDB;User Id=postgres;Password=*****;",
PostgreSqlDialect.Provider)
use dbConnection = dbFactory.OpenDbConnection()
Console.WriteLine dbConnection.State
let persons = dbConnection.Select<Person>()
persons.ForEach(fun p -> Console.WriteLine p.FirstName)
Console.Read() |> ignore
0
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,第一个注释行无效,而下面的代码设置相同.这意味着问题只与类型提供者没有连接IMHO.
我是否需要进行任何其他设置.
如果需要任何其他细节,请告诉我.
UPDATE
在kvb的评论之后,我试过了两个.这是使用web配置更新的代码.
//type dbSchema = SqlEntityConnection<ConnectionStringName = "TestDB", Provider="Npgsql">
type dbSchema = SqlEntityConnection< …Run Code Online (Sandbox Code Playgroud) 我正在使用Orchard MVC来完成我的一个项目.我试图创建自定义模块.我没有发现任何问题.但是当我试图将图像放入视图页面时,我遇到了问题.我不知道问题是路由还是Orchard.
首先,模块的名称中有"点",如Orchard.所以,如果我试图从Modules/Orchard.Name/Style/Images/1.jpg提供路径,它就有了.在其中,我猜不是真的.如果我试图访问这样../../../Style/Images/1.jpg最终网址有HTTP://localhost/style/Images/1.jpg这不是图片的路径.
如何访问图像的URL.我是否必须定义要访问的自定义路由?或者还有其他解决方法吗?
我想从框架中提出的问题太多了.但只是想知道它是否有可能.或者将会解决这个问题.
新版本的JSON.Net开始支持F#union类型.解决这个问题的方法是什么,这意味着如果我使用servicestack.text,那么我如何展平联合类型以支持序列化.
这是两者的代码示例.
type Shape =
| Rectangle of width : float * length : float
| Circle of radius : float
| Empty
[<EntryPoint>]
let main argv =
// printfn "%A" argv
let shape1 = Rectangle(1.3, 10.0)
let json = JsonConvert.SerializeObject(shape1) //JSON.net
printfn "%A" json
// {
// "Case": "Rectangle",
// "Fields": [
// 1.3,
// 10.0
// ]
// }
let shape2 = JsonConvert.DeserializeObject<Shape>(json) //JSON.Net
printfn "%A" (shape2 = shape1) //true
let sJson = JsonSerializer.SerializeToString shape1 //SS.Text
printfn …Run Code Online (Sandbox Code Playgroud) 我试图在F Sharp样本中使用FluentValidation库.但我陷入困境,因为我甚至无法将简单的C Sharp代码转换为F Sharp代码.
但后来我认为这个奇妙的库只是试图将编程方面的功能部分带到CSharp,所以我应该只在FSharp中创建自己的库,而不是使用它.这将是简单和适当的方式.
所以,我需要一个意见,哪种方式会更好.如果有人可以为此创建FSharp示例,那将会很棒.它仅用于学习目的,因为我主要在C#中使用流畅的库.而且我喜欢和他们一起去F#.
我正在尝试使用Coffescript课程的angularjs
我能够注射并能够使用coffeescript做一个成功的例子.但要访问$ scope,我必须在构造函数中编写函数.我能做些什么来摆脱它.如果有另一种好的方式来写,请告诉我.
这是我的工作coffeescript代码
class PersonCtrl
@$inject = ['$scope']
constructor: (@scope) ->
@scope.persons = [
firstName:"Kunjan"
lastName:"Dalal"
,
firstName:"Kunj"
lastName:"Dalal"
]
@scope.addPerson = () =>
@scope.persons.push angular.copy @scope.person
Run Code Online (Sandbox Code Playgroud)
如果需要进一步的详细信息,请告诉我.
我知道AOP和Postsharp但是这里的约束是我不能使用postharp并且使用属性进行日志记录会产生性能开销.
但是现在我还要把日志代码放在每个方法中,很多复制粘贴,也不是方法的一部分.所以,我的功能不止一件作品.拥有业务逻辑和一起登录有点不太好看.
反正有没有,比如让类开放结束,可以从类或函数的外面添加日志.或者我只需要采用传统的伐木方式.
如果需要任何进一步的信息,请告诉我.任何好的/另一种伐木方式的建议也受到欢迎.
我试图访问南希的动态属性.在Nancy中,如果在查询中传递参数,它将作为动态属性.我该如何访问它.
关于这一点有很多讨论/问题,但每一个地方,首先是创造动态然后消费它.我怎样才能消耗已经创建的东西?
这是两个代码段
public class ParameterModule : NancyModule
{
public ParameterModule():base("/{about}")
{
this.Get["/"] = (parameters) => "Hello About" + parameters.about;
}
}
Run Code Online (Sandbox Code Playgroud)
并为F#
type ParameterModule() as this =
inherit NancyModule("/{about}")
do this.Get.["/"] <- fun parameters -> "Hello" + parameters?("about") :> obj
Run Code Online (Sandbox Code Playgroud)
我无法访问,因为对象没有该属性.
如果需要任何进一步的信息,请告诉我.
c# ×4
f# ×4
c#-4.0 ×3
c#-to-f# ×3
f#-3.0 ×2
servicestack ×2
angularjs ×1
coffeescript ×1
java ×1
javascript ×1
json ×1
logging ×1
nancy ×1
npgsql ×1
orchardcms ×1
postgresql ×1
razor ×1
reflection ×1
requirejs ×1