最近,我开始学习Haskell,因为我想扩大我对函数式编程的了解,我必须说到目前为止我真的很喜欢它。我当前使用的资源是Pluralsight上的“ Haskell基础知识第1部分”课程。不幸的是,我在理解讲师关于以下代码的一句话时遇到了一些困难,希望你们能对此话题有所了解。
随附代码
helloWorld :: IO ()
helloWorld = putStrLn "Hello World"
main :: IO ()
main = do
helloWorld
helloWorld
helloWorld
Run Code Online (Sandbox Code Playgroud)
报价单
如果您在一个do块中多次执行相同的IO操作,则它将多次运行。因此,此程序将字符串“ Hello World”输出三遍。本示例有助于说明这putStrLn不是具有副作用的功能。我们只调用putStrLn一次函数来定义helloWorld变量。如果putStrLn有打印字符串的副作用,它将只打印一次,并且helloWorld在主do-block中重复的变量将没有任何效果。
在大多数其他编程语言中,这样的程序只会打印一次“ Hello World”,因为在putStrLn调用函数时会进行打印。这种微妙的区别通常会使初学者不胜其烦,因此请仔细考虑一下,并确保您了解为什么该程序会打印“ Hello World”三遍,以及如果该putStrLn函数作为副作用打印时只打印一次。
我不明白的
对我来说,字符串“ Hello World”被打印三遍似乎是很自然的。我认为helloWorld变量(或函数?)是一种稍后调用的回调。我不明白的是,如果putStrLn产生副作用,它将导致字符串仅打印一次。或者为什么只用其他编程语言只打印一次。
假设在C#代码中,我想它看起来像这样:
C# (提琴)
using System;
public class Program
{
public static void HelloWorld()
{
Console.WriteLine("Hello World");
}
public static void Main()
{
HelloWorld();
HelloWorld();
HelloWorld();
}
} …Run Code Online (Sandbox Code Playgroud) 目前我正在编写一个 Python 脚本,用于聚合来自多个 Excel 工作表的数据。我选择使用的模块是 Pandas,因为它的速度和 Excel 文件的易用性。该问题仅与 Pandas 的使用有关,我试图创建一个额外的列,该列包含组内唯一的、仅限整数的有序 等级。
我的 Python 和 Pandas 知识有限,因为我只是一个初学者。
目标
我正在尝试实现以下数据结构。排名前 10 的 AdWords 广告根据其在 Google 中的位置进行垂直排名。为了做到这一点,我需要在原始数据中创建一列(参见表 2 和 3),其中包含不包含重复值的仅整数排名。
表 1:我试图实现的数据结构
device , weeks , rank_1 , rank_2 , rank_3 , rank_4 , rank_5
mobile , wk 1 , string , string , string , string , string
mobile , wk 2 , string , string , string , string , string
computer, wk 1 , string , string , string …Run Code Online (Sandbox Code Playgroud) 语境
当前,我正在使用.NET Core创建用C#编写的提取,转换和加载(ETL)应用程序。ETL应用程序的目标是通过Entity Framework Core 2.1.0和更高版本2.1.1访问的数据库。由于模式是固定的,因此使用数据库优先方法。Microsoft提供了以下指南来解决这种情况。该指南指出,Scaffold-DbContextPackage Manager控制台中的CLI命令可用于生成DbContext和相应的实体模型。
在此项目的早期,我已经成功使用了此CLI命令。但是,模型的命名并不直接对应于表名和列名。此CLI工具的较新版本提供了一个option -UseDatabaseNames,因此我选择重新运行此命令以生成一些更新的模型。另外,我计划在将来重新生成DbContext。
问题
不幸的是,运行Scaffold-DbContext命令现在返回以下错误:Instance failure.。详细选项使您可以更深入地了解出了什么问题,但是我不清楚到底出了什么问题以及如何解决。
命令
Scaffold-DbContext "[ConnectionString]" Microsoft.EntityFrameworkCore.SqlServer -UseDatabaseNames -OutputDir Models -v -force
Run Code Online (Sandbox Code Playgroud)
详细输出
Using project '[ProjectName]'.
Using startup project '[ProjectName]'.
Build started...
Build succeeded.
C:\Program Files\dotnet\dotnet.exe exec --depsfile C:\Repos\[Client]\[ProjectName]\[ProjectName]\[ProjectName].Service\bin\Debug\netcoreapp2.1\[ProjectName].Service.deps.json --additionalprobingpath C:\Users\[MyComputerUsername]\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig C:\Repos\[Client]\[ProjectName]\[ProjectName]\[ProjectName].Service\bin\Debug\netcoreapp2.1\[ProjectName].Service.runtimeconfig.json C:\Users\[MyComputerUsername]\.nuget\packages\microsoft.entityframeworkcore.tools\2.1.1\tools\netcoreapp2.0\any\ef.dll dbcontext scaffold Server=[ConnectionString] Microsoft.EntityFrameworkCore.SqlServer --json --output-dir Models --use-database-names --force --verbose --no-color --prefix-output --assembly C:\Repos\[Client]\[ProjectName]\[ProjectName]\[ProjectName].Service\bin\Debug\netcoreapp2.1\[ProjectName].Service.dll --startup-assembly C:\Repos\[Client]\[ProjectName]\[ProjectName]\[ProjectName].Service\bin\Debug\netcoreapp2.1\[ProjectName].Service.dll --project-dir C:\Repos\[Client]\[ProjectName]\[ProjectName]\[ProjectName].Service\ --language C# --working-dir C:\Repos\[Client]\[ProjectName]\[ProjectName] --root-namespace [ProjectName].Service
Using …Run Code Online (Sandbox Code Playgroud) ef-database-first .net-core entity-framework-core-migrations entity-framework-core-2.1 ef-core-2.1
.net-core ×1
ef-core-2.1 ×1
entity-framework-core-migrations ×1
haskell ×1
ordinal ×1
pandas ×1
python ×1
rank ×1
ranking ×1