我想通过制作一个用于操作多项式的方法来测试编写Ada包的水域.可以为一大类代数结构定义多项式,因此为了反映这一点,我想使包通用,因此它可以与Floats,Integers或其他数字子类型一起使用.
我现在想说的是,我对Ada的类型系统如何工作或它的包系统如何工作知之甚少.网络上似乎缺乏良好的初学者Ada信息,因此我不得不从这篇不那么新手友好的Wikibooks文章中收集到我能够获得的智慧.
此页面包含有关类型层次结构的一些信息.基于此,似乎我的Polynomial包的合理类型将是Scalar类型,因为显然是定义算术运算的类型.所以这就是我所尝试的polynomials.ads:
generic
MAX_DEGREE : Positive;
type Element is new Scalar;
package Polynomial is
type Polynomial is Array (0 .. MAX_DEGREE) of Element;
end Polynomial;
Run Code Online (Sandbox Code Playgroud)
但是,这只是让我忘了"Scalar" is undefinedGNAT.
到目前为止,我真的只是半盲地感觉到了,我实际上并不知道这些东西是如何起作用的.如果我认为你认为需要澄清任何重大误解,请告诉我.可能最简单的方法是提供我可以学习的示例polynomial.ads和polynomial.adb代码 - 就像多项式类型的定义(使用泛型max-degree和element类型)和一个简单的示例函数(如添加两个多项式),所以我可以看到如何通用功能工作.
PS:排序相关,有没有办法为用户定义的类型定义属性?
我正在用Python做一些自我教育的底层网络编程。我正在使用Ubuntu 18.04和Python 3。使用此代码,我能够发送原始以太网数据包:
from socket import socket as Socket, AF_PACKET, SOCK_RAW
def send_bytes(byte_sequence):
with Socket(AF_PACKET, SOCK_RAW) as socket:
socket.bind(("enp0s31f6", 0))
socket.send(bytes(byte_sequence))
Run Code Online (Sandbox Code Playgroud)
我可以使用此过程发送ping。我知道它正在工作,因为我可以看到ping发出信号并在Wireshark中收到响应。
现在,我想监听数据包,例如对ping的响应。希望在不涉及任何非标准库的情况下该如何做?我希望代码尽可能“接近金属”,因此理想情况下,我想监听整个以太网帧,以便我可以手工解析所有内容并弄清楚它是否是我要查找的数据包对于。
我正在制作一个名为Diplomacy的旧策略游戏的基于浏览器的克隆.这是我到目前为止所得到的:
<html>
<head>
<title>Diplomacy</title>
<script type="text/javascript" src="game.js" />
</head>
<body>
<canvas id="canvas" width="750" height="750" style="border: 3px solid black; background:url('DiplomacyMap.png');">
Your browser does not support Canvas.
</canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它在浏览器中看起来像什么?一个空白页面.但是,如果我删除头部(game.js)中的外部JS文件的链接,它显示没有问题.这似乎与JS文件的内容没有关系,因为即使我删除它们或将它们全部注释掉,问题仍然存在.这似乎只与元素的存在有关.
如果我用<script src="file.js">嵌入式替换元素<script> ...code... </script>,页面工作正常.
发生什么了?
第2部分:
<script type="text/javascript">
colorProvince(PARIS, FRANCE);
</script>
Run Code Online (Sandbox Code Playgroud)
虽然colorProvince函数和PARIS和FRANCE常量都是在game.js中定义的,但是这个函数没有被调用(由colorProvince函数中的简单alert()验证).这也没有做任何事情:
<script type="text/javascript">
alert(colorProvince);
</script>
Run Code Online (Sandbox Code Playgroud) 我想要一个包含整数和可变长度字符串的记录,如下所示:
type Entry is
record
Value: Integer;
Label: String;
end record;
Run Code Online (Sandbox Code Playgroud)
我遇到了一个问题,您不能将不受约束的字符串放入记录类型中,因此按照我尝试的该链接的建议
type Entry(Label_Length : Natural) is
record
Value: Integer;
Label: String(1..Label_Length);
end record;
Run Code Online (Sandbox Code Playgroud)
但现在的问题是,我想要一组这些东西:
Entries : Array(1..2) of Entry := (
(Label_Length => 0, Value => 1, Label => ""),
(Label_Length => 0, Value => 2, Label => "")
);
Run Code Online (Sandbox Code Playgroud)
我被告知
main.adb:17:28: unconstrained element type in array declaration
Run Code Online (Sandbox Code Playgroud)
我只是希望能够声明这些东西的(常量)数组,并以直观的方式输入标签和值(我已经不喜欢手动计算字符串长度并输入 Label_Length 了)。我怎样才能做到这一点?