我是Scala的全新人,你能帮我解决这个简单的功能 - input参数是一个整数,函数应该返回一个整数列表,第一个条目是输入整数,其余的是通过逐个省略最左边的数字得到的。例如,
如果输入为0
,则返回List(0)
,input =5678
返回List(5678,678,78,8)
。
def leftTrunc(input:Int):List[Int]
提前多多感谢
答案 0 :(得分:2)
5678.toString.tails.toList.init.map(_.toInt)
//> res0: List[Int] = List(5678, 678, 78, 8)
将数字转换为字符串。然后tails
完全按照您的意愿行事。除了它是一个迭代器,所以将它转换为List
,并且它的末尾有一个空字符串,所以使用init
返回除最后一个元素之外的所有元素。但它们是字符串,因此请使用map
将它们全部转换为Int
但我很确定你的教练期待你用数字来做这件事:)
这是一个数字版本,在这种情况下故意取消注释,以便您可以自己解决它是如何工作的
val n = 5678
val digits = n.toString.size
List.iterate(10, digits)(10*) map { n % _}
编辑:正如评论中所要求的那样,反过来只使用inits而不是tails(反向获取请求的顺序)
5678.toString.inits.toList.init.reverse.map(_.toInt)
//> res0: List[Int] = List(5, 56, 567, 5678)
这个数字更容易这样
List.iterate(n, digits)(_/10).reverse
答案 1 :(得分:0)
如果你分享你的尝试会很有趣,我们都可以尝试。 :)我希望你能得到一些,而且我的最终会有一些想法...
$db = new SQLIte3('mysqlite.db');
$table = 'mytable';
$tableCol = getColName($db, $table);
for ($i=0; $i<count($tableCol); $i++){
echo "Column $i = ".$tableCol[$i]."\n";
}
function getColName($db, $table){
$qry = "SELECT * FROM $table LIMIT 1";
$result = $db->query($qry);
$nCols = $result->numCols();
for ($i = 0; $i < $ncols; $i++) {
$colName[$i] = $result->columnName($i);
}
return $colName;
}