我正在为python3.7写一个C扩展模块。我有一个简单的结构作为PyObject:
typedef struct {
PyObject_HEAD
double attacker;
double victim;
double game_hardness;
int inflation;
} RatingSystem;
Run Code Online (Sandbox Code Playgroud)
和初始化器:
static int
RatingSystem_init(RatingSystem *self, PyObject *args, PyObject *kwargs) {
double kek;
static char *kwargs_list[] = {"attacker", "victim", "game_hardness", "inflation"};
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|$dddi", kwargs_list,
&self->attacker, &self->victim,
&self->game_hardness, &self->inflation)) {
return -1;
}
printf("Success\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我在python 3.7.3下的Mac OS上运行它,一切正常,但是如果我切换到alpine 3.10 python docker image(python:3.7-alpine),请执行以下初始化:
import rating_system
rs = rating_system.RatingSystem(attacker=1000.0, victim=1000.0, game_hardness=1300.0, inflation=1)
Run Code Online (Sandbox Code Playgroud)
我懂了Segmentation fault。在gdb下运行显示以下内容:
Program received signal SIGSEGV, Segmentation fault.
vgetargskeywords (args=0x7f87284f0050, kwargs=0x7f87284e0a00, …Run Code Online (Sandbox Code Playgroud) 我有许多以编程方式制作的NSButton,我需要识别,如果用鼠标右键按下其中一个按钮.有没有办法在swift中做到这一点?
创建按钮的代码:
var height = 0
var width = 0
var ar : Array<NSButton> = []
var storage = NSUserDefaults.standardUserDefaults()
height = storage.integerForKey("mwHeight")
width = storage.integerForKey("mwWidth")
var x = 0
var y = 0
var k = 1
for i in 1...height {
for j in 1...width {
var but = NSButton(frame: NSRect(x: x, y: y + 78, width: 30, height: 30))
but.tag = k
but.title = ""
but.action = Selector("buttonPressed:")
but.target = self
but.bezelStyle = NSBezelStyle(rawValue: 6)!
ar.append(but)
self.view.addSubview(but) …Run Code Online (Sandbox Code Playgroud) 我有一个大项目,在storyboard和变量中的标签中都存储了大量文本.我知道如何在标签中本地化文本,但不知道如何本地化字符串变量.你能解释一下吗或给出指南的链接.我正在使用Xcode 6.2版
我有很多 NSTextFields,我想知道,如果用户在编辑其中一个时按下了其中一个箭头键。功能
override func keyDown(theEvent: NSEvent) {
switch theEvent.character {
case NSRightArrowFunctionKey:
println(1)
moveGor(NSRightArrowFunctionKey)
case NSLeftArrowFunctionKey:
moveGor(NSLeftArrowFunctionKey)
case NSUpArrowFunctionKey:
moveVert(NSUpArrowFunctionKey)
case NSDownArrowFunctionKey:
moveVert(NSDownArrowFunctionKey)
default:
super.keyDown(theEvent)
}
}
Run Code Online (Sandbox Code Playgroud)
似乎不起作用。有没有其他方法可以快速做到这一点?
编辑:
我有以下扩展名NSEvent:
extension NSEvent {
var character: Int {
let str = charactersIgnoringModifiers!.utf16
return Int(str[str.startIndex])
}
}
Run Code Online (Sandbox Code Playgroud)
我在之前的函数中使用的
我必须找到这些数字的除法模数:
239^(10^9) 和 10^9 + 13
239^(10^9) 和 10^9 + 15
... 等等,最多 1001;
在 C++ 中仅使用本机库。怎么做?如您所见,第一个数字大约是 30 亿个符号。
我试图找到模周期的长度,但它们比 10 还要长,甚至unsigned long long int无法处理这么大的数字 (239^10)。另外我认为“大数字”算法(将数字存储为数组)对我也不起作用(500 * 10 ^ 9)是太多操作。
顺便说一句,这应该比 5 小时内更有效。
那是我的代码:
override func keyDown(theEvent: NSEvent) {
super.keyDown(theEvent)
switch theEvent.character {
case NSLeftArrowFunctionKey:
println(1)
case NSRightArrowFunctionKey:
println(2)
case NSDownArrowFunctionKey:
println(3)
case NSUpArrowFunctionKey:
println(4)
default:
break
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我尝试识别是否按下了其中一个箭头按钮,但它始终不起作用。甚至函数 keyDown 似乎也从未被调用过。
这就是 中所写的viewDidAppear,如果这可以帮助您提供答案:
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.styleMask = NSClosableWindowMask | NSMiniaturizableWindowMask | NSTitledWindowMask
var frame = self.view.window?.frame
var newHeight = CGFloat(438)
var newWidth = CGFloat(415)
frame?.size = NSMakeSize(newWidth, newHeight)
self.view.window?.setFrame(frame!, display: true)
self.view.window?.backgroundColor = NSColor.darkGrayColor()
}
Run Code Online (Sandbox Code Playgroud)
在viewDidLoad我只是添加一些不可选择和不可编辑的 NSTextFields 像这样:
var x = CGFloat(0)
var y = …Run Code Online (Sandbox Code Playgroud) swift ×4
macos ×3
cocoa ×2
keydown ×2
algorithm ×1
alpine-linux ×1
c ×1
c++ ×1
docker ×1
localization ×1
modulo ×1
nsbutton ×1
nstextfield ×1
python ×1
right-click ×1
xcode6 ×1