Comments (3)
I believe it is intended that the return value be the same list (just a different view of it), not a new list.
I don't think so (@leafpetersen @lrhn), even though I wish that was the case - I think .cast
tries to re-use the same list, and basically invokes .retype
if not possible, making this OK.
I.e. this is just a convenience for calling List.castFrom
:
Let's look at the implementation of DoubleLinkedQueue.cast
:
Unfortunately there is no way in Dart to really "re-type" something, so unlike Dart 1's as List<String>
, list.cast<String>()
may return a new list if necessary to fulfill that cast.
from collection.
Both cast
or retype
are really intended to return a view of the original collection, one that also forwards mutating methods. The "if necessary" means that cast
returns the original list if it already implements the desired interface, possibly by implementing a subtype, where retype
always wraps so the return type is exact. It should not create a new collection that isn't linked to the original.
The QueueList
class has the extra issue of needing to implement both List.cast
and Queue.cast
, so it needs to return something that is both a List
and a Queue
. I have a class ready for that in the private parts of the SDK, because one of the plans for Dart 2 was to make ListQueue
implement List
as well, but that doesn't help this package.
from collection.
Let me give this a shot, thanks @srawlins and @lrhn.
from collection.
Related Issues (20)
- Slice method will Stack Overflow in certain scenarios
- [Feature] Add a BTree implementation HOT 2
- Different HOT 1
- `different` method extension HOT 1
- Confusing `singleWhereOrNull` extension method HOT 7
- ListExtensions.slice: infinite recursion when calling slice on a ListSlice<T> declared as List<T> HOT 1
- Add `Map<int, Object?>.asList()` method HOT 2
- mergeSort fails when static type of a list does not match a runtime type HOT 10
- Parameter of `sorted` differs from `sort` HOT 3
- Add `distincBy` extension for `Iterable` HOT 1
- List.duplicates to find duplicate elements in a List or Iterable HOT 2
- Add `List.get()` method HOT 1
- MapEqualty Hash collides easily HOT 1
- Cannot use int type with the sortedBy API HOT 1
- List.replaceAll HOT 2
- Deprecate IterableExtensions that have exact equivalents in the SDK
- Add a `whereNull()` or a `nullsCount` to iterable extension HOT 1
- Add type safe `IterableZip`
- [Proposal] add mapSeparated method on `Iterable` HOT 4
- SplayTreeSet treats -0 and 0 as different numbers HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from collection.