小编Lou*_*Lou的帖子

VB.NET - ":="有什么作用?

我在网上或在运营商文档下找不到任何信息,但我看到这个":="在VB.NET中使用了几次,我无法弄清楚它的功能.

vb.net operators

6
推荐指数
2
解决办法
248
查看次数

VB.NET - 类中的扩展函数?

我正在尝试创建一个带有函数的类库,将二进制整数转换为denary,反之亦然,这样我就可以将它导入另一个项目而无需重写函数.它工作正常,这是课程的一部分:

Public Class BinaryDenary
    Public Shared Function ToBinary(ByVal DenaryNumber As Integer) As Integer
        Dim Binary As String = ""
        While DenaryNumber > 0
            If DenaryNumber Mod 2 = 1 Then
                Binary = 1 & Binary
            Else
                Binary = 0 & Binary
            End If
            DenaryNumber \= 2
        End While
        Return CInt(Binary)
    End Function
End Class
Run Code Online (Sandbox Code Playgroud)

我在项目中测试了它,它工作正常.

ToBinary(3) 'Returns 11
ToDenary(110) 'Returns 6
Run Code Online (Sandbox Code Playgroud)

但是 - 主要是出于审美原因 - 我希望能够像扩展方法一样使用它,这样我就可以使用变量来执行此操作:

NormalInt.ToBinary(3)
Run Code Online (Sandbox Code Playgroud)

但我无法在类中编写扩展方法.有没有办法做到这一点?这并不是非常重要,但我喜欢尽我所能使用扩展方法.

vb.net extension-methods function

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

为什么 =~ 只评估一次?

在此示例脚本中:

#perl 5.26.1 
$foo = "batcathat";

if ($foo =~ /cat/g) {
    print "yes\n";
} else {
    print "no\n";
}

if ($foo =~ /cat/g) {
    print "yes\n";
} else {
    print "no\n";
}
Run Code Online (Sandbox Code Playgroud)

这将打印:

yes
no
Run Code Online (Sandbox Code Playgroud)

预期输出是:

yes
yes
Run Code Online (Sandbox Code Playgroud)

我可以通过打印字符串来确认它没有通过运行正则表达式匹配而发生变异。

为什么 Perl 看起来只对正则表达式求值一次?我在谷歌或手册上找不到任何关于此的信息,而且这种行为对我来说并不直观。我希望每次评估正则表达式匹配时,它都会从新开始,并且不会记住有关上一场比赛的任何信息。

编辑:对于未来的上下文,在我发现一些如下所示的代码后提出了这个问题:

while ( $foo =~ /pattern/g) { $some_incrementing_var++ };
Run Code Online (Sandbox Code Playgroud)

我最初不明白这个 while 循环如何终止,因为乍一看它看起来像一个无限循环。

regex perl

6
推荐指数
2
解决办法
217
查看次数

大括号中的数字(例如“{0}”)是什么意思?

我一直在四处寻找,但很难找到这个问题的答案,因为我正在寻找的东西是如此不具体。

我看过很多{0}其中使用的代码,但我仍然无法弄清楚它在做什么。这是一个例子:

Dim literal As String = "CatDogFence"
Dim substring As String = literal.Substring(6)
Console.WriteLine("Substring: {0}", substring)
Run Code Online (Sandbox Code Playgroud)

vb.net string function curly-braces

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

构建口译员需要学习什么?

对于我的 AQA A2 级计算项目,我决定创建一种基本的解释性编程语言,输出到控制台。我不知道如何构建一个解释器。我有一本紫龙书,里面都是关于编译器设计的,正如user166390在回答这个问题时所说,构建编译器的初始步骤与构建解释器相同。我的问题是:这是真的吗?

我可以使用龙书中描述的技术来编写解释器吗?如果是的话,我需要使用哪些步骤并学习如何使用?

例如,我是否需要编写词法分析器、语法分析器、语义分析器和中间代码生成器?

我是否可以编写一个基本的解析器来读取源代码的每一行,解析它并立即执行指令,或者这是一个众所周知的坏主意?

interpreter programming-languages interpreted-language

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

在 Python 中动态参数化多个测试

我正在尝试使用 Pytest 编写动态测试套件,其中测试数据保存在单独的文件中,例如 YAML 文件或 .csv。我想运行多个测试,所有这些测试都从同一个文件进行参数化。假设我有一个测试文件test_foo.py,如下所示:

import pytest

@pytest.mark.parametrize("num1, num2, output", ([2, 2, 4], [3, 7, 10], [48, 52, 100]))
def test_addnums(num1, num2, output):
    assert foo.addnums(num1, num2) == output

@pytest.mark.parametrize("foo, bar", ([1, 2], ['moo', 'mar'], [0.5, 3.14]))
def test_foobar(foo, bar):
    assert type(foo) == type(bar)
Run Code Online (Sandbox Code Playgroud)

使用参数化装饰器,我可以在 pytest 中运行多个测试,并且按预期工作:

test_foo.py::test_addnums[2-2-4] PASSED                                                                                                                                                            
test_foo.py::test_addnums[3-7-10] PASSED                                                                                                                                                           
test_foo.py::test_addnums[48-52-100] PASSED                                                                                                                                                        
test_foo.py::test_foobar[1-2] PASSED                                                                                                                                                               
test_foo.py::test_foobar[moo-mar] PASSED                                                                                                                                                           
test_foo.py::test_foobar[0.5-3.14] PASSED
Run Code Online (Sandbox Code Playgroud)

但我想动态地参数化这些测试。我的意思是,我想将所有测试的测试数据写入一个单独的文件中,以便当我运行 pytest 时,它将应用我写入每个测试函数的所有测试数据。假设我有一个类似于以下内容的 YAML 文件:

test_addnums:
  params: [num1, num2, output]
  values:
    - [2, 2, 4]
    - [3, …
Run Code Online (Sandbox Code Playgroud)

python pytest python-3.x parametrized-testing

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

创建基本的编程语言 - 资源?

我不知道这是否是这个问题的正确的SE网站,如果没有,我会感谢任何能指出我正确方向的人.

对于我的大学项目(英国大学〜高中),我想设计一种基本的编程语言.它不具备所有必要的功能,但足以在控制台上编写一些基本程序.我想把它解释为我听说过复杂的编译语言是多么复杂; 面向对象,因为我只懂VB.NET,对OOP最熟悉; 我的目标是创建一种非程序员很容易学习的简单语言.

我一直在四处寻找,但很难找到有用的资源来解释如何以任何细节创建编程语言.我真的很感激你可以建议的任何在线资源 - 它们必须是免费的 - 如果有类似我错过的StackOverflow问题,深入的在线文章或教程,免费在线教科书的摘录......你认为可能有用的任何东西.

language-agnostic programming-languages

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

字符看起来像ASCII 63但不是这样我无法删除它

我正在从文本文件中读取文本.文本文件必须读取的第一个字符串是"Algood",并注意spaaaaaace.在记事本中,似乎这个字符串中有一个spaaaaaace,但事实并非如此.当我在Visual Studio的QuickWatch中测试第6个(从零开始的索引)字符时,它显示为:

"?"c
Run Code Online (Sandbox Code Playgroud)

当我使用该Asc函数获取ASCII码时,它告诉我ASCII码是63. 63是一个问号.但是当我测试以查看字符串是否包含ASCII 63时,它会测试为false.所以看起来字符串包含带有ASCII码63的字符,只有它没有,它包含一些其他字符,它们测试为ASCII码63.这是一个问题:如果我不这样做,我就无法删除该字符知道怎么称呼它.我可以删除最后一个字符,但文本文件中的每个字符串都不包含此字符.

在此输入图像描述

问题是:如果不是问号,这个字符是什么,我怎样才能唯一识别所以我可以删除它?

vb.net ascii non-ascii-characters

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

每个算法都可以用有限状态机表示吗?

我知道可以将一些算法表示为FSM,但FSM可以描述每种可能的算法吗?

algorithm computer-science state-machine

3
推荐指数
2
解决办法
1006
查看次数

Perl 中的 qr/ 和 m/ 有什么区别?

来自 Perldoc:

qr/STRING/msixpodualn
Run Code Online (Sandbox Code Playgroud)

该运算符将其 STRING 引用(并可能编译)为正则表达式。STRING 的插值方式与 m/PATTERN/ 中的 PATTERN 相同

m/PATTERN/msixpodualngc
/PATTERN/msixpodualngc
Run Code Online (Sandbox Code Playgroud)

在字符串中搜索模式匹配,在标量上下文中,如果成功则返回 true,如果失败则返回 false。如果没有通过 =~ 或 !~ 运算符指定字符串,则搜索 $_ 字符串。(用 =~ 指定的字符串不必是左值 - 它可能是表达式求值的结果,但请记住 =~ 绑定得相当紧密。)另请参阅 perlre。

选项如上面 qr// 中所述

我确信我错过了一些明显的东西,但我根本不清楚这些选项有何不同 - 它们看起来基本上是同义词。你什么时候会使用qr//代替m//,反之亦然?

regex perl precompiled

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