我在网上或在运营商文档下找不到任何信息,但我看到这个":="在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)
但我无法在类中编写扩展方法.有没有办法做到这一点?这并不是非常重要,但我喜欢尽我所能使用扩展方法.
在此示例脚本中:
#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 循环如何终止,因为乍一看它看起来像一个无限循环。
我一直在四处寻找,但很难找到这个问题的答案,因为我正在寻找的东西是如此不具体。
我看过很多{0}
其中使用的代码,但我仍然无法弄清楚它在做什么。这是一个例子:
Dim literal As String = "CatDogFence"
Dim substring As String = literal.Substring(6)
Console.WriteLine("Substring: {0}", substring)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 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) 我不知道这是否是这个问题的正确的SE网站,如果没有,我会感谢任何能指出我正确方向的人.
对于我的大学项目(英国大学〜高中),我想设计一种基本的编程语言.它不具备所有必要的功能,但足以在控制台上编写一些基本程序.我想把它解释为我听说过复杂的编译语言是多么复杂; 面向对象,因为我只懂VB.NET,对OOP最熟悉; 我的目标是创建一种非程序员很容易学习的简单语言.
我一直在四处寻找,但很难找到有用的资源来解释如何以任何细节创建编程语言.我真的很感激你可以建议的任何在线资源 - 它们必须是免费的 - 如果有类似我错过的StackOverflow问题,深入的在线文章或教程,免费在线教科书的摘录......你认为可能有用的任何东西.
我正在从文本文件中读取文本.文本文件必须读取的第一个字符串是"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.这是一个问题:如果我不这样做,我就无法删除该字符知道怎么称呼它.我可以删除最后一个字符,但文本文件中的每个字符串都不包含此字符.
问题是:如果不是问号,这个字符是什么,我怎样才能唯一识别所以我可以删除它?
我知道可以将一些算法表示为FSM,但FSM可以描述每种可能的算法吗?
来自 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//
,反之亦然?
vb.net ×4
function ×2
perl ×2
regex ×2
algorithm ×1
ascii ×1
curly-braces ×1
interpreter ×1
operators ×1
precompiled ×1
pytest ×1
python ×1
python-3.x ×1
string ×1