我正在为Swift学习本教程:https://www.raywenderlich.com/125311/make-game-like-candy-crush-spritekit-swift-part-1并遇到了这段代码:
func == (lhs: Cookie, rhs: Cookie) -> Bool {
return lhs.column == rhs.column && lhs.row == rhs.row
}
Run Code Online (Sandbox Code Playgroud)
我写的确是这样,但Xcode给出了我的这些错误:
Consecutive declarations on a line must be separated by ';'
Expected declaration operators are only allowed at global scope
Run Code Online (Sandbox Code Playgroud)
我从apple的文档中找到了这段代码:https://developer.apple.com/documentation/swift/equatable
这和我写的很相似.怎么了?这对我来说似乎是个错误.我正在使用Xcode 6 Beta 2
这是我的整个Cookie类:
class Cookie: Printable, Hashable {
var column: Int
var row: Int
let cookieType: CookieType
let sprite: SKSpriteNode?
init(column: Int, row: Int, cookieType: CookieType) {
self.column = column …Run Code Online (Sandbox Code Playgroud) 我正在使用正在使用的OS X应用程序,AVAssetImageGenerator.generateCGImagesAsynchronouslyForTimes它通常可以正常工作.然而,偶尔我回来的缩略图只包含前几行像素,其余的是绿色,有时图像将是不同的绿色阴影.追踪是非常困难的,因为它不会一直发生,但是当它确实有大约一半的缩略图受到影响时.这是我期望看到的图像:
但通常会发生这种情况:
这是我用来生成缩略图的代码:
let assetGenerator = AVAssetImageGenerator(asset: AVURLAsset(URL: url))
assetGenerator.appliesPreferredTrackTransform = true
let time = CMTime(seconds: 0, preferredTimescale: 30)
let handler: AVAssetImageGeneratorCompletionHandler = { _, image, _, res, error in
defer { dispatch_group_leave(self.waitForThumbnail!) }
guard let image = image where res == .Succeeded else {
if let error = error { print(error) }
return
}
let s = CGSize(width: CGImageGetWidth(image), height: CGImageGetHeight(image))
self.thumbnail = NSImage(CGImage: image, size: s)
}
waitForThumbnail = dispatch_group_create()
dispatch_group_enter(waitForThumbnail!)
assetGenerator.maximumSize = maxThumbnailSize
assetGenerator.generateCGImagesAsynchronouslyForTimes([NSValue(CMTime: …Run Code Online (Sandbox Code Playgroud) 我正在一个可以搜索食物的网站上工作,看看它是水果,蔬菜还是两种(因为我很无聊).我决定使用Angular,尽管我很陌生.我开始收到此错误:$ rootScope:infdig Infinite $ digest循环
这可能是也可能不是确切的措辞或错误,因为页面滞后这么多,我无法打开Javascript控制台.
这是我的结果视图控制器:
app.controller('resultController', ['$scope', '$routeParams', '$http',
function($scope, $routeParams, $http) {
$scope.result = $routeParams.query;
$scope.whatIsIt = function() {
$http.get('json/foods.json').success(function(data) {
var lists = JSON.parse(data);
var itIsA = 'uuggghhhhh';
if (lists['fruit'].contains($scope.result)) {
itIsA = 'fruit';
} else if (lists['vegetable'].contains($scope.result)) {
itIsA = 'vegetable';
}
});
}
}]);
Run Code Online (Sandbox Code Playgroud)
继承我的app模块:
var app = angular.module('fruitOrNot', [
'ngRoute'
]);
app.config(['$routeProvider' ,
function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'layouts/fruit-search.html',
controller: 'searchController'
}).when('/:query', {
templateUrl: 'layouts/result.html',
controller: 'resultController'
});
}]);
Run Code Online (Sandbox Code Playgroud)
这是layouts/result.html:
<h1>{{ result …Run Code Online (Sandbox Code Playgroud) 我有以下结构:
#[derive(Debug)]
pub struct Entry {
pub index: usize,
pub name: String,
pub filename_offset: u64,
pub entry_type: EntryType,
}
#[derive(Debug)]
pub enum EntryType {
File {
file_offset: u64,
length: usize,
},
Directory {
parent_index: usize,
next_index: usize,
},
}
Run Code Online (Sandbox Code Playgroud)
Entry是GameCube ROM文件系统表中的一个条目,它描述了一个文件或目录.我定义了各种方法,Entry如Entry::read_filename和Entry::write_to_disk.但是,我有一些方法对常规文件和目录都没有意义.例如,Entry::iter_contents遍历目录的所有子条目.
我希望能够定义某些方法,例如Entry::iter_contents仅针对entry_type某个变体的条目.
我尝试EntryType变成一个特征并制作了一个DirectoryEntryInfo和FileEntryInfo结构,两者都实现了EntryType.
可悲的是,这种方法存在一些问题.我有一个Vec<Entry>其他地方,这种变化将成为Vec<Entry<EntryType>>.使用这样的特质,我也没有办法垂头丧气Entry<EntryList>来Entry<DirectoryEntryInfo>.我也尝试过做一些事情Any,因为这是我所知道的唯一一种在Rust中贬低的方式,但我只能投entry_type,而不是整个Entry本身.
最终,我想最终得到类似的东西: …
今天是我与Swift的第一天,我遇到了一个问题.我使用rand生成一个随机数,但每次运行代码时它都会给我相同的结果.
main.swift:
import Foundation
var player = Player()
for _ in 1..6 {
println(player.kick())
}
Run Code Online (Sandbox Code Playgroud)
player.swift:
import Foundation
class Player {
var health = 25
var xp = 15
var upgrades = ["kick": 0, "punch": 0]
func kick() -> Int {
let range = (3, 7)
let damage = Int(rand()) % (range.1 - range.0) + range.0 + 1
return damage
}
func punch() -> Int {
let range = (4, 6)
let damage = Int(rand()) % (range.1 - range.0) + …Run Code Online (Sandbox Code Playgroud) 似乎有很多方法可以在Ruby中循环使用Enumerable.有没有之间的差异each,foreach或collect,map或其他类似的方法呢?
或者有什么理由我不应该在某些情况下使用某些方法?
我注意到Rust的Vec::len方法只是访问vector的len属性.为什么不len只是一个公共财产,而不是围绕它包装一个方法?我认为这是为了在以后实现发生变化的情况下,没有什么会破坏,因为它Vec::len可以改变它获取长度的方式而没有任何用户Vec知道.但我不知道是否还有其他原因.
我的问题的第二部分是关于何时设计API.如果我正在构建自己的API,并且我有一个带有len属性的结构,我应该len私有并创建一个公共len()方法吗?在Rust中公开字段是不好的做法吗?我不这么认为,但我没有注意到Rust经常这样做.例如,我有以下结构:
pub struct Segment {
pub dol_offset: u64,
pub len: usize,
pub loading_address: u64,
pub seg_type: SegmentType,
pub seg_num: u64,
}
Run Code Online (Sandbox Code Playgroud)
这些字段中的任何一个是私有的,而是具有类似的包装函数Vec吗?如果是这样,为什么呢?在Rust有一个很好的指导方针吗?
我正在尝试重载此类中的<<运算符,但这是输出:
Hello,
Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
test.cc:
#include <iostream>
#include "class.h"
#include <string>
using namespace std;
int main() {
MYString s("Hello");
MYString s2;
string hello = "Hello";
cout << s.text << ", " << s2.text << endl;
cout << "S: " << s << endl;
hello[0] = 'M';
cout << hello << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是class.h:
#ifndef CLASS_H
#define CLASS_H
#include <string>
using namespace std;
class MYString {
public:
string text;
MYString(string data="") {
text = data;
}
friend …Run Code Online (Sandbox Code Playgroud) 所以我在Ruby中玩,并注意到"a""b"返回"ab".如果喜欢这种非常奇怪和无用的东西,那么我想知道这叫什么,如果它有目的.我很感激任何答案.谢谢!
swift ×3
enums ×2
ruby ×2
rust ×2
angularjs ×1
avfoundation ×1
c++ ×1
downcast ×1
ios ×1
iteration ×1
iterator ×1
javascript ×1
loops ×1
methods ×1
naming ×1
random ×1
string ×1
thumbnails ×1
type-safety ×1
visibility ×1
xcode6 ×1