我通常是一名 C# 开发人员,所以也许这是我对 Python 不了解的地方。
我有一个数据类的数据模型,每个类中有 < 10 个子数据元素。
例如:
@dataclass
class Block:
def tranmission(this) -> Transmission:
...
def allocations(this) -> Generator[Allocation,Any,Any]:
...
def day(this) -> Day:
...
Run Code Online (Sandbox Code Playgroud)
所以当我添加一个“.”时 看看智能感知,我期待一个不错的简短选项列表,但我似乎更像是 100 个。
智能感知确实包括我的方法,但它们淹没在我不感兴趣且不确定为什么存在的其他东西的海洋中,
block.return 和 block.True 对我来说似乎根本没有意义。
它为什么这么做?以及我如何才能看到更有针对性和有用的列表。
理想情况下,所有看似无用的建议都可以被过滤掉,如果没有,如果我可以将我的方法优先考虑到列表的顶部将会有所帮助。
我目前唯一的想法(这很糟糕)是为我的方法有一个命名约定前缀,然后我可以通过在智能感知中输入前缀来找到它们!肯定有更好的方法吗?
这似乎只影响“if”子句,实际上它似乎只影响我,所以我将忍受它,并且如果它给我带来问题,则将我们的 if 子句分解到函数中(这与 lambda 类似) ,不支持类型注释)
我有一个管道和一个 azure-pipelines.yml 来驱动我的构建,这需要 PAT 才能使构建脚本使用 nuget 推送工件,通过使用“nuget 源添加..”这有效!但我的 PAT 在脚本中,这很糟糕,并且 PAT 最终会过期,所以我宁愿使用 $(System.AccessToken),但我无法让它工作,似乎有很多相关问题,但我根本不明白我没有做什么。
这是工作 yaml(带有假 PAT)
name: $(Rev:r)
trigger:
- master
jobs:
- job: Windows
pool:
vmImage: 'windows-2019'
steps:
- task: NuGetToolInstaller@1
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '3.1.201'
- script: dotnet tool restore
displayName: Install FAKE
- script: nuget sources add -name "Kookerella2" -source https://pkgs.dev.azure.com/..../index.json -username anything -password thisismypat
displayName: nuget add source
- script: dotnet fake build
displayName: Run Build
Run Code Online (Sandbox Code Playgroud)
并使用 $(System.AccessToken)
我做这个?将硬编码的 pat 替换为环境变量 %SYSTEM_ACCESSTOKEN% (您必须滚动到最右侧才能看到),但这失败了! …
我有 yaml 来运行我的构建(这是一个假脚本),并且我想将构建脚本的各种输出作为工件发布。
我已经完成了一半,但我无法弄清楚如何输出某些特定的文件夹。
- task: PublishPipelineArtifact@1
displayName: Publish Report
inputs:
pathToPublish: $(System.DefaultWorkingDirectory)/s/ReportProject/bin/Release/netcoreapp3.1
artifactName: MyReport
Run Code Online (Sandbox Code Playgroud)
它实际上似乎要做的是获取一些任意文件夹(这是我的管道的名称,以下为子文件夹)
subfolders
TestResults
a
b
s
Run Code Online (Sandbox Code Playgroud)
是的,我的应用程序在那里,但所有东西也在那里,非常奇怪。
我改变了路径...它发布了相同的内容,即所有内容!
let ints = [1..40000]
// create [{1};{2};.....{40000}]
let a1 = ints |> List.map Seq.singleton
// tail recursively append all the inner list
let a2 = a1 |> List.fold Seq.append Seq.empty
// tail recursively loop through them
let a3 = a2 |> Seq.forall (fun x -> true) // stack overflow...why?
Run Code Online (Sandbox Code Playgroud)
我问的理由是担心我会有递归附加的代码,我需要确保它不会爆炸....所以我运行这个例子以便确定将要发生的事情
在调试和作为应用程序运行.
我傻吗?有些东西在 monad/计算表达式中看起来更好,我有很多使用 seq 计算表达式的代码,但是每次我点击一个选项<>我都必须恢复到“Option.map”等。
有点刺耳(当我在 C# 中执行此操作时,我为 IMaybe<> 类型编写了一个 linq 运算符,它看起来不错且一致)。
我可以,但不是特别想写一个,那里肯定有一个(或多个),人们使用哪个?
IE
所以而不是
let postCodeMaybe =
personMaybe
|> Option.bind (fun p -> p.AddressMaybe())
|> Option.map (fun -> p.Postcode())
Run Code Online (Sandbox Code Playgroud)
我们可以去
let postCodeMaybe =
option {
for p in personMaybe do
for a in p.AddressMaybe() do
a.Postcode()
}
Run Code Online (Sandbox Code Playgroud)
我对前面的代码没有任何问题,除了在我的上下文中它存在于许多看起来像后者的“seq”计算表达式中(并且一些将查看此代码的开发人员将来自 C#/LINQ 背景,这些背景基本上是后者)。
我不记得如何让 SRTP 发挥作用了
我想要一个接受参数并调用指定方法的函数,简单吗?
let inline YearDuck< ^a when ^a : (member Year : Unit -> string)> (x : ^a) : string =
x.Year ()
Run Code Online (Sandbox Code Playgroud)
但我明白了
Severity Code Description Project File Line Suppression State
Error FS0072 Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved.
Run Code Online (Sandbox Code Playgroud)
它知道 x 是一个 ^a,我已经指定 …
我最好被描述为 C#/F# + 一些业余 Haskell 程序员。
我对 Scala 中的类型签名有点困惑。
例如
恒等函数有类型
Nothing => Nothing
Run Code Online (Sandbox Code Playgroud)
(根据我的 intellij 中的 Scala 控制台)
但对我来说这毫无意义。
身份类型类似于..
all x . x => x
Run Code Online (Sandbox Code Playgroud)
.....
所以
identity 1
=> x ~ Int
=> 1 : Int
Nothing => Nothing
Run Code Online (Sandbox Code Playgroud)
对我来说毫无意义......我希望我在将任何值传递给一个不期望什么的函数时输入异常!
显然我错过了一些东西。