我使用 fscanf 函数来处理输入。现在在输入中以# 开头的每一行都必须被忽略。我如何忽略完整的一行?例如这个输入:
#add some cars
car add 123456 White_Mazda_3 99 0
car add 123457 Green_Mazda_3 101 0
car add 111222 Red_Audi_TT 55 1200
#let see the cars
report available_cars
#John Doe takes a white mazda
customer new 123 JohnDoe
customer rent 123 123456
#Can anyone else take the mazda?
report available_cars
#let see Johns status
report customer 123
Run Code Online (Sandbox Code Playgroud)
如您所见,注释的长度可能有所不同,命令的结构也有所不同……有什么方法可以区分两行吗?或者一种告诉我们何时在一行的末尾/开头的方法?
我正在尝试制作一个匹配特定模式的正则表达式,但我想忽略以#
. 我该怎么做?
假设我有这个模式 (?i)(^|\W)[a-z]($|\W)
它匹配所有出现一个字母的行。例如,它匹配这些行:
asdf e asdf
j
kke o
Run Code Online (Sandbox Code Playgroud)
现在我想覆盖它,以便它不匹配以 a 开头的行 #
编辑:
我说的不够具体。我的真实模式更复杂。看起来有点像这样: (?i)(^|\W)([a-hj-z]|lala|bwaaa|foo($|\W)
它应该像我想阻止攻击性语言一样使用,如果一行不以哈希开头,在这种情况下它应该覆盖。
我有一个 Excel 工作表,其中包含几个值,我将其导入到 SQL (book1$) 中,并且我想将这些值传输到 ProcessList 中。几行具有相同的主键(即 ProcessID),因为这些行包含原始值和修改后的值,我想保留这两个值。如何让 SQL 忽略重复的主键?
我尝试了 IGNORE_DUP_KEY = ON 但对于具有重复主键的行,仅显示 1 个最新行。
CREATE TABLE dbo.ProcessList
(
Edited varchar(1),
ProcessId int NOT NULL PRIMARY KEY WITH (IGNORE_DUP_KEY = ON),
Name varchar(30) NOT NULL,
Amount smallmoney NOT NULL,
CreationDate datetime NOT NULL,
ModificationDate datetime
)
INSERT INTO ProcessList SELECT Edited, ProcessId, Name, Amount, CreationDate, ModificationDate FROM Book1$
SELECT * FROM ProcessList
Run Code Online (Sandbox Code Playgroud)
另外,如果我有一行并且更新该行的值,是否有任何方法可以保留该行的原始值并在下面插入该行的克隆,并自动更新更新的值和创建/修改日期?
我读到没有外部类的实例就不能创建内部类的实例。但是,当我尝试使用它作为外部类的实例成员创建内部类的实例时,它起作用了。
我知道它是通过对外部类对象的引用来创建内部对象,但这是正确的方法吗?
下面是我的代码片段:
public class TestInner {
private Nonstatic non = null;
private static int access = 4;
public class Nonstatic {
void hello() {
access = 90;
}
}
public static void main(String[] args) {
TestInner outer = new TestInner();
TestInner.Nonstatic innern= outer.new Nonstatic();
System.out.println("Non static obj1 is "+innern);
outer.testinnerObj();
}
public void testinnerObj() {
non = new Nonstatic();
System.out.println("Non static obj2 is "+non);
non.hello();
}
}
Run Code Online (Sandbox Code Playgroud) 我已经为Deno完成了第一个包,然后将其发布到eno.land/x/。
我想知道是否有办法在上传包时忽略一些文件和目录,例如:[“.github”,“.vim”,“test_deps.ts”]。
非常像.npmignore。
在高耦合环境中,更改一个模块会影响另一个模块。好的,但我看不出这怎么可能(除了更改方法签名或返回类型)?
好吧,如果我更改一个类,只有在以下情况下它才能破坏其他类中的代码:
出于同样的原因,依赖抽象(接口)是很好的,这样我们就可以保证定义的方法将在那里。
除此之外,更改一个类还能如何影响另一个依赖类?
language-agnostic oop dependencies design-patterns interface
我有一个无限生成器对象,它产生一些数字,如下所示:
def index_generator():
i = 0
while True:
yield i**2
i += 1
my_gen = index_generator()
for i in range(100):
print(next(my_gen)) # outputs 0,1,4,9, ...
Run Code Online (Sandbox Code Playgroud)
现在我需要i
在一些迭代后将变量重置为零,以再次使用生成器;让我们在我的代码中再说 100 次。我不能my_gen = index_generator()
每次都重复。那么,有什么解决办法吗?
考虑一个static
变量,例如:
private static int x;
Run Code Online (Sandbox Code Playgroud)
如果我们尝试在 main 方法中打印它的值,它将是 0。因此变量被初始化。现在考虑变量是否为final
:
private static final int x;
Run Code Online (Sandbox Code Playgroud)
这不可能; 为什么?我们必须像 那样初始化它private static final int x = 2;
,或者使用像这样的静态初始化器:
static {
x = 2;
}
Run Code Online (Sandbox Code Playgroud)
static
默认情况下初始化一个变量;那么如果变量也是,为什么会出现编译错误final
?
有人可以解释为什么这段代码虽然有效,但却使 mypy 静态分析器以多种方式抱怨:
ranges = dict()
ranges['max'] = 0
ranges['services'] = []
ranges['services'].append('a')
Run Code Online (Sandbox Code Playgroud)
即:
ranges = dict()
ranges['max'] = 0
ranges['services'] = []
ranges['services'].append('a')
Run Code Online (Sandbox Code Playgroud)
如果我简单地向初始变量添加类型提示,ranges: dict = dict()
它就可以正常工作。
我很困惑为什么静态分析器不能自己解决这个问题,特别是当我dict
在第一个实例中使用关键字来初始化字典时。
我正在使用运行时反射来加载一个包含以下两种方法的类:
public static void foo(int[] args)
{
System.out.print("foo invoked: ");
for(int arg : args)
System.out.print(arg + " ");
System.out.println();
}
public static void bar(String[] args)
{
System.out.print("bar invoked: ");
for(String arg : args)
System.out.print(arg + " ");
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
(相同的方法,除了一个采用 int 数组,另一个采用字符串数组)
然后我尝试像这样调用这两种方法:
int[] intArr = {1,2,3};
clazz.getMethod("foo", int[].class).invoke(null, intArr);
String[] strArr = {"1","2","3"};
clazz.getMethod("bar", String[].class).invoke(null, strArr); //Exception
Run Code Online (Sandbox Code Playgroud)
(这里的“clazz”是两个方法所在的类,我在运行时加载了它)
第一次调用不会导致异常并输出预期的输出,但第二次调用会引发以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at ReflectionTests.main(ReflectionTests.java:63) …
Run Code Online (Sandbox Code Playgroud) java ×3
python ×2
c ×1
deno ×1
dependencies ×1
duplicates ×1
final ×1
generator ×1
input ×1
interface ×1
line ×1
mypy ×1
oop ×1
primary-key ×1
reflection ×1
regex ×1
sql ×1