如何解决Ruby Retrieve mails with number ofpairs 无需太多代码修改
email = []
start = 1
while start < 51
email.push ("jean.dupont.#{start}@email.fr")
start += 1
end
puts email
当我执行 puts email
时,我想检索所有只有偶数的邮件。
我在 google 或 stackoverflow 上看了很多,发现大多数人都在调整他们的代码,但我不想过多地接触我的代码,尽管我知道这是必要的。
使用此代码检索对等电子邮件的正确方法是什么?
解决方法
您可以在电子邮件数组上使用 select
并使用 [/\d+/]
提取数字并检查它是否直接在 puts
中,然后按该条件过滤
puts email.select { |e| e[/\d+/].to_i.even? }
[/\d+/]
相当于 scan(/\d+/)[0]
您可以做的最小更改是添加一个 private func consumeVideoForStreaming(from sampleBuffer: CMSampleBuffer) {
guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
print("Error acquiring sample buffer")
return
}
let context = CIContext()
let image = CIImage(cvPixelBuffer: imageBuffer)
let resizeFilter = CIFilter(name:"CILanczosScaleTransform")!
let targetSize = CGSize(
width: 1280,height:720
)
let scale = targetSize.height / 2160
let aspectRatio = targetSize.width/(3840 * scale)
// Apply resizing
resizeFilter.setValue(image,forKey: kCIInputImageKey)
resizeFilter.setValue(scale,forKey: kCIInputScaleKey)
resizeFilter.setValue(aspectRatio,forKey: kCIInputAspectRatioKey)
guard let outputImage = resizeFilter.outputImage else {
return
}
var outputBuffer: CVPixelBuffer?
let attrs = [
kCVPixelBufferCGImageCompatibilityKey: kCFBooleanTrue,kCVPixelBufferCGBitmapContextCompatibilityKey: kCFBooleanTrue
] as CFDictionary
let status = CVPixelBufferCreate(
kCFAllocatorDefault,Int(targetSize.width),Int(targetSize.height),kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,attrs,&outputBuffer
)
guard status == kCVReturnSuccess,let buffer = outputBuffer else {
return
}
context.render(outputImage,to: buffer)
// Do something with my resized buffer...
}
条件以仅在 if
为偶数 (start
) 时推送元素:
start.even?
但是,作为 Ruby,我认为您可以使用几种方法来完成类似的工作:
email.push("jean.dupont.#{start}@email.fr") if start.even?
一个很好的练习是重新考虑您的代码以提供相同的输出,但尽可能少做。例如,循环,如果您不需要奇数元素,那么使用它们就毫无价值。您可以使迭代中的元素仅是您需要的元素。
以及您在开头声明的 (1..50) # create a range of numbers from 1 to 50
.select(&:even?) # select from the range only those elements that are even
.map { |start| "jean.dupont.#{start}@email.fr" } # map each element to create a string using their values
.each(&method(:puts)) # iterate over each element and invoke `puts` using the element as the argument
累加器。大多数情况下,您可以通过映射对象(哈希或数组实例或任何响应 email
的对象)来实现这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。