首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala单元中的For-循环问题

Scala单元中的For-循环问题
EN

Stack Overflow用户
提问于 2016-09-19 10:27:10
回答 1查看 155关注 0票数 0

早上好。

我在Spark中使用Scala已经有几个月了,我被困在一个for -循环中,给了我一个空(即Unit)内容。我想知道你能不能帮帮忙。以下是使用的代码行:

代码语言:javascript
复制
val slr = lsresult.split(Array(' ', '\n')).filter(_.startsWith("/data")) // Extraction of File Path starting with "/data"

val slrMap = slr.map(x => 0.until(x.length).filter(x.startsWith("/",_))).map(x => x.slice(5,7)).map{case Vector(a,b)=>(a,b).toString} // Extraction of the position of the third party data collection agency (i.e., sourcename) of the file

// Knowing what is the positioning of the "/" character in the filename help in determining the sourcename. Here, string between 6th and 7th "/" contains the agency's name hence "slice (5,7)"

val charStart= slrMap.map(_.slice(1,3).toInt)

val charStop= slrMap.map(_.slice(4,6).toInt)

以下是返回单元的方法

代码语言:javascript
复制
def sourcename = {for (a<-Range(0,slr.length)) {print(slr{a}.slice(charStart{a}, charStop{a}))};}

在执行最后一行时,我得到

原始名称:单位

但是,当我随后输入sourcename时,它确实产生了我想要的结果(即显示所需的源名),但仍然将其视为阻止我将其转换为字符串的Unit。

非常感谢你在这方面的帮助。

致以敬意,

克里斯蒂安

EN

回答 1

Stack Overflow用户

发布于 2016-09-19 10:30:27

你忘了在结尾写yield

for-理解语法

通常情况下,for comprehension看起来是这样的

代码语言:javascript
复制
for {
 a <- something
 b <- something if a > 10
} yield b

在你的情况下

代码语言:javascript
复制
for {
 a <- 0 to slr.length
} yield slr(a).slice(charStart(a), charStop(a))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39570911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档