some intro :
xxxxxxxxxxprivate Double getTotalSumExcludeCancelAmount(List amounts) { double totalToPay = 0.00; Iterator amountsIterator = amounts.iterator(); while (amountsIterator.hasNext()) { Amount amount = (Amount) amountsIterator.next(); if (!amount.getIsToCancel()) { // Additional condition comparing to the first method. if (!cancelstatuses.contains(amount.getStatus())) { totalToPay += amount.doubleValue(); } } }return new Double(totalToPay); }xxxxxxxxxxprivate Double getTotalSum(List amounts) { double totalToPay = 0.00; Iterator amountsIterator = amounts.iterator(); while (amountsIterator.hasNext()) { Amount amount = (Amount) amountsIterator.next(); if (!cancelstatuses.contains(amount.getStatus())) { totalToPay += amount.doubleValue(); } } return new Double(totalToPay); }private Double getTotalSumExcludeCancelAmount(List amounts) { //1. filter the list with “!amount.getIsToCancel()” condition List newamounts = filter(amounts); //2. get sum return getTotalSum(newamounts);}ex:考虑有理数约化到最简形式
Tips:
cons函数是一种用于构建pair(对)的基本函数,它接受两个参数,返回一个由这两个参数构成的pair。
具体来说,cons函数的语法是 (cons x y),其中x和y可以是任何类型的值,包括数字、符号、字符串、列表等。调用cons函数会返回一个pair,其中第一个元素是x,第二个元素是y。这个pair可以用于表示二元组、坐标点、树等各种数据结构,是Scheme语言中非常基础和重要的一种数据类型。
例如,可以使用cons函数构建一个由两个数字构成的pair:
xxxxxxxxxx(cons 1 2)
这个表达式会返回一个pair,其中第一个元素是1,第二个元素是2,表示一个二元组。可以使用car和cdr函数分别获取这个pair的第一个和第二个元素:
xxxxxxxxxx(car (cons 1 2)) ; 返回1(cdr (cons 1 2)) ; 返回2
cons函数也可以用于构建链表等数据结构,例如可以使用cons函数构建一个包含三个元素的列表:
xxxxxxxxxx(cons 1 (cons 2 (cons 3 '())))
这个表达式会返回一个包含三个元素的链表,它的第一个元素是1,第二个元素是一个包含两个元素的链表(2, 3),第三个元素是一个空列表。可以使用car和cdr函数逐步获取这个链表中的元素:
xxxxxxxxxx(car (cons 1 (cons 2 (cons 3 '())))) ; 返回1(cadr (cons 1 (cons 2 (cons 3 '())))) ; 返回2(caddr (cons 1 (cons 2 (cons 3 '())))) ; 返回3
在Scheme语言中,cons函数是非常基础和常用的函数,可以用于构建各种复杂的数据结构。
(define ( make-rat n d)
(let ( ( g (gcd n d)))
(cons (/ n g) (/ d g))))
(list 1 2 3 4)
= (cons 1 (cons 2(cons 3 (cons 4 nil))))
(define (list-ref items n)
(if ( = n 0)
(car items)
(list-ref (cdr items) (- n 1))))
(define (scale-list items factor)
(if (null? items)
nil
(cons (* (car items) factor)
(scale-list (cdr items) factor))))
(Tips
cdr是一种基本的操作符,通常用于获取一个pair(即由两个元素组成的列表)的第二个元素,或者获取一个列表除第一个元素外的所有元素。具体来说,cdr函数会返回一个pair或列表的cdr(即第二个元素或去掉第一个元素后的剩余部分)
car是一种基本的操作符,通常用于获取一个pair(即由两个元素组成的列表)的第一个元素,或者获取一个列表的第一个元素。具体来说,car函数会返回一个pair或列表的car(即第一个元素)。
)
(define (map proc items)
(if (null? items)
nil
(cons (proc (car items))
(map proc (cdr items)))))